Mercurial > prosody-hg
comparison util/ip.lua @ 5552:40e7a6cf15ff
util.rfc{3484,6724}: Update to RFC 6724
| author | Florian Zeitz <florob@babelmonkeys.de> |
|---|---|
| date | Tue, 30 Apr 2013 18:34:03 +0200 |
| parents | f0e72fbe4d6a |
| children | e108c3f97f26 6fe09707c73b |
comparison
equal
deleted
inserted
replaced
| 5550:557583904dc5 | 5552:40e7a6cf15ff |
|---|---|
| 62 if fields[1] == 127 then | 62 if fields[1] == 127 then |
| 63 return 0x2; | 63 return 0x2; |
| 64 -- Link-local unicast: | 64 -- Link-local unicast: |
| 65 elseif fields[1] == 169 and fields[2] == 254 then | 65 elseif fields[1] == 169 and fields[2] == 254 then |
| 66 return 0x2; | 66 return 0x2; |
| 67 -- Site-local unicast: | |
| 68 elseif (fields[1] == 10) or (fields[1] == 192 and fields[2] == 168) or (fields[1] == 172 and (fields[2] >= 16 and fields[2] < 32)) then | |
| 69 return 0x5; | |
| 70 -- Global unicast: | 67 -- Global unicast: |
| 71 else | 68 else |
| 72 return 0xE; | 69 return 0xE; |
| 73 end | 70 end |
| 74 end | 71 end |
| 95 local function label(ip) | 92 local function label(ip) |
| 96 if commonPrefixLength(ip, new_ip("::1", "IPv6")) == 128 then | 93 if commonPrefixLength(ip, new_ip("::1", "IPv6")) == 128 then |
| 97 return 0; | 94 return 0; |
| 98 elseif commonPrefixLength(ip, new_ip("2002::", "IPv6")) >= 16 then | 95 elseif commonPrefixLength(ip, new_ip("2002::", "IPv6")) >= 16 then |
| 99 return 2; | 96 return 2; |
| 97 elseif commonPrefixLength(ip, new_ip("2001::", "IPv6")) >= 32 then | |
| 98 return 5; | |
| 99 elseif commonPrefixLength(ip, new_ip("fc00::", "IPv6")) >= 7 then | |
| 100 return 13; | |
| 101 elseif commonPrefixLength(ip, new_ip("fec0::", "IPv6")) >= 10 then | |
| 102 return 11; | |
| 103 elseif commonPrefixLength(ip, new_ip("3ffe::", "IPv6")) >= 16 then | |
| 104 return 12; | |
| 100 elseif commonPrefixLength(ip, new_ip("::", "IPv6")) >= 96 then | 105 elseif commonPrefixLength(ip, new_ip("::", "IPv6")) >= 96 then |
| 101 return 3; | 106 return 3; |
| 102 elseif commonPrefixLength(ip, new_ip("::ffff:0:0", "IPv6")) >= 96 then | 107 elseif commonPrefixLength(ip, new_ip("::ffff:0:0", "IPv6")) >= 96 then |
| 103 return 4; | 108 return 4; |
| 104 else | 109 else |
| 109 local function precedence(ip) | 114 local function precedence(ip) |
| 110 if commonPrefixLength(ip, new_ip("::1", "IPv6")) == 128 then | 115 if commonPrefixLength(ip, new_ip("::1", "IPv6")) == 128 then |
| 111 return 50; | 116 return 50; |
| 112 elseif commonPrefixLength(ip, new_ip("2002::", "IPv6")) >= 16 then | 117 elseif commonPrefixLength(ip, new_ip("2002::", "IPv6")) >= 16 then |
| 113 return 30; | 118 return 30; |
| 119 elseif commonPrefixLength(ip, new_ip("2001::", "IPv6")) >= 32 then | |
| 120 return 5; | |
| 121 elseif commonPrefixLength(ip, new_ip("fc00::", "IPv6")) >= 7 then | |
| 122 return 3; | |
| 123 elseif commonPrefixLength(ip, new_ip("fec0::", "IPv6")) >= 10 then | |
| 124 return 1; | |
| 125 elseif commonPrefixLength(ip, new_ip("3ffe::", "IPv6")) >= 16 then | |
| 126 return 1; | |
| 114 elseif commonPrefixLength(ip, new_ip("::", "IPv6")) >= 96 then | 127 elseif commonPrefixLength(ip, new_ip("::", "IPv6")) >= 96 then |
| 115 return 20; | 128 return 1; |
| 116 elseif commonPrefixLength(ip, new_ip("::ffff:0:0", "IPv6")) >= 96 then | 129 elseif commonPrefixLength(ip, new_ip("::ffff:0:0", "IPv6")) >= 96 then |
| 117 return 10; | 130 return 35; |
| 118 else | 131 else |
| 119 return 40; | 132 return 40; |
| 120 end | 133 end |
| 121 end | 134 end |
| 122 | 135 |
