diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2011-02-12 18:59:33 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2011-02-12 18:59:33 +0000 |
commit | e351f43f0c8ab59cc7df238881dcc335ef3ba36c (patch) | |
tree | 906c4668d428eaeea1a6a7ecc62c1b6c397f1304 | |
parent | e3a39de81a4f818ba5e4896bfc4c073885488981 (diff) |
libs/core: add is4linklocal(), is4rfc1918() and is6linklocal() to luci.ip
-rw-r--r-- | libs/core/luasrc/ip.lua | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/libs/core/luasrc/ip.lua b/libs/core/luasrc/ip.lua index 3b0ca6799..77aecd283 100644 --- a/libs/core/luasrc/ip.lua +++ b/libs/core/luasrc/ip.lua @@ -334,6 +334,26 @@ function cidr.is4( self ) return self[1] == FAMILY_INET4 end +--- Test whether this instance is an IPv4 RFC1918 private address +-- @return Boolean indicating whether this instance is an RFC1918 address +function cidr.is4rfc1918( self ) + if self[1] == FAMILY_INET4 then + return ((self[2][1] >= 0x0A00) and (self[2][1] <= 0x0AFF)) or + ((self[2][1] >= 0xAC10) and (self[2][1] <= 0xAC1F)) or + (self[2][1] == 0xC0A8) + end + return false +end + +--- Test whether this instance is an IPv4 link-local address (Zeroconf) +-- @return Boolean indicating whether this instance is IPv4 link-local +function cidr.is4linklocal( self ) + if self[1] == FAMILY_INET4 then + return (self[2][1] == 0xA9FE) + end + return false +end + --- Test whether the instance is a IPv6 address. -- @return Boolean indicating a IPv6 address type -- @see cidr.is4 @@ -341,6 +361,15 @@ function cidr.is6( self ) return self[1] == FAMILY_INET6 end +--- Test whether this instance is an IPv6 link-local address +-- @return Boolean indicating whether this instance is IPv6 link-local +function cidr.is6linklocal( self ) + if self[1] == FAMILY_INET6 then + return (self[2][1] >= 0xFE80) and (self[2][1] <= 0xFEBF) + end + return false +end + --- Return a corresponding string representation of the instance. -- If the prefix length is lower then the maximum possible prefix length for the -- corresponding address type then the address is returned in CIDR notation, |