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 ]