This archive is retained to ensure existing URLs remain functional. It will not contain any emails sent to this mailing list after July 1, 2024. For all messages, including those sent before and after this date, please visit the new location of the archive at https://mailman.ripe.net/archives/list/ripe-atlas@ripe.net/
[atlas] IPv4 leading zeroes and weird interface behaviour
- Previous message (by thread): [atlas] IPv4 leading zeroes and weird interface behaviour
- Next message (by thread): [atlas] IPv4 leading zeroes and weird interface behaviour
Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Philip Homburg
philip.homburg at ripe.net
Fri Oct 27 11:08:19 CEST 2017
On 2017/10/25 23:16 , Peter J. Holzer wrote: > Possibly gethostbyname in the libc, but I haven't tested that. At least > interpreting numbers with leading zeroes as octal is traditional on > unix-like OSs (I probably first noticed that on Ultrix around 1990). I > don't know why anyone thought this was a good idea. I wouldn't expect > anyone to rely on it, but apparently nobody dares to get rid of that > "feature". Technically it is C feature. If you call, for example, strtol with the third argument (base) equal to 0, then it will parse numbers just like a C compiler. In many contexts is is convenient if you can just type a hex number by prefixing the number with 0x. Unfortunately, this use of strtol is so common, that it gets used even in a context where it doesn't make sense, such as parsing an IPv4 address. However, the way IPv4 addresses are parsed is completely weird. This is from the inet_aton manual page: Values specified using the `.' notation take one of the following forms: a.b.c.d a.b.c a.b a When four parts are specified, each is interpreted as a byte of data and assigned, from left to right, to the four bytes of an Internet address. Note that when an Internet address is viewed as a 32-bit integer quantity on the VAX the bytes referred to above appear as ``d.c.b.a''. That is, VAX bytes are ordered from right to left. When a three part address is specified, the last part is interpreted as a 16-bit quantity and placed in the right-most two bytes of the network address. This makes the three part address format convenient for speci- fying Class B network addresses as ``128.net.host''. When a two part address is supplied, the last part is interpreted as a 24-bit quantity and placed in the right most three bytes of the network address. This makes the two part address format convenient for specify- ing Class A network addresses as ``net.host''. When only one part is given, the value is stored directly in the network address without any byte rearrangement. All numbers supplied as ``parts'' in a `.' notation may be decimal, octal, or hexadecimal, as specified in the C language (i.e., a leading 0x or 0X implies hexadecimal; otherwise, a leading 0 implies octal; other- wise, the number is interpreted as decimal). -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: OpenPGP digital signature URL: </ripe/mail/archives/ripe-atlas/attachments/20171027/4c19ea20/attachment.sig>
- Previous message (by thread): [atlas] IPv4 leading zeroes and weird interface behaviour
- Next message (by thread): [atlas] IPv4 leading zeroes and weird interface behaviour
Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]