On 4/28/11 11:53 AM, IƱaki Baz Castillo wrote:
2011/4/28 Daniel-Constantin
Mierla<daniel(a)kamailio.org>rg>:
Btw, when was the idea that IP comparison is
string comparison thrown here,
I missed any email?!? To be sure the comparison is done right, then the
string with the IPs have to be converted to binary and the results compared.
The
point is that IPv4 comparisons are valid as a pure string
comparison. Note that being strict, the following IPv4 is not valid:
"1.2.3.04"
See RFC 5954 "Essential Correction for IPv6 ABNF and URI Comparison in
RFC 3261":
IPv4address = dec-octet "." dec-octet "." dec-octet
"." dec-octet
dec-octet = DIGIT ; 0-9
/ %x31-39 DIGIT ; 10-99
/ "1" 2DIGIT ; 100-199
/ "2" %x30-34 DIGIT ; 200-249
/ "25" %x30-35 ; 250-255
So comparing two IPv4 as pure strings would work (except if you want
to perform network comparison with mask and so).
yes, that was the point to compare
network addresses with mask,
otherwise '==' can be used for string comparisons, no matter what it is
inside, ip address, username, a.s.o.
Cheers,
Daniel
Obviously under IPv6 binary comparison is needed (this is what my
function does).