Import more constants/flags
This commit is contained in:
@@ -64,10 +64,6 @@ module Netlink
|
|||||||
NLA_ALIGNTO = 4
|
NLA_ALIGNTO = 4
|
||||||
|
|
||||||
# from linux/rtnetlink.h.
|
# from linux/rtnetlink.h.
|
||||||
# Should we put each of these groups under separate namespace?
|
|
||||||
# Netlink::Message::GETROUTE
|
|
||||||
# Netlink::Route::Type::UNICAST
|
|
||||||
# Netlink::Route::Protocol::STATIC
|
|
||||||
RTM_NEWLINK = 16
|
RTM_NEWLINK = 16
|
||||||
RTM_DELLINK = 17
|
RTM_DELLINK = 17
|
||||||
RTM_GETLINK = 18
|
RTM_GETLINK = 18
|
||||||
@@ -123,7 +119,6 @@ module Netlink
|
|||||||
RTM_SETDCB = 79
|
RTM_SETDCB = 79
|
||||||
|
|
||||||
# Route#type
|
# Route#type
|
||||||
|
|
||||||
RTN_UNSPEC = 0
|
RTN_UNSPEC = 0
|
||||||
RTN_UNICAST = 1
|
RTN_UNICAST = 1
|
||||||
RTN_LOCAL = 2
|
RTN_LOCAL = 2
|
||||||
@@ -138,15 +133,42 @@ module Netlink
|
|||||||
RTN_XRESOLVE = 11
|
RTN_XRESOLVE = 11
|
||||||
|
|
||||||
# Route#protocol
|
# Route#protocol
|
||||||
|
|
||||||
RTPROT_UNSPEC = 0
|
RTPROT_UNSPEC = 0
|
||||||
RTPROT_REDIRECT = 1
|
RTPROT_REDIRECT = 1
|
||||||
RTPROT_KERNEL = 2
|
RTPROT_KERNEL = 2
|
||||||
RTPROT_BOOT = 3
|
RTPROT_BOOT = 3
|
||||||
RTPROT_STATIC = 4
|
RTPROT_STATIC = 4
|
||||||
|
RTPROT_GATED = 8
|
||||||
|
RTPROT_RA = 9
|
||||||
|
RTPROT_MRT = 10
|
||||||
|
RTPROT_ZEBRA = 11
|
||||||
|
RTPROT_BIRD = 12
|
||||||
|
RTPROT_DNROUTED = 13
|
||||||
|
RTPROT_XORP = 14
|
||||||
|
RTPROT_NTK = 15
|
||||||
|
RTPROT_DHCP = 16
|
||||||
|
|
||||||
# XXXX MORE TO GO
|
# Route#scope, Addr#scope
|
||||||
|
RT_SCOPE_UNIVERSE = 0
|
||||||
|
RT_SCOPE_SITE = 200
|
||||||
|
RT_SCOPE_LINK = 253
|
||||||
|
RT_SCOPE_HOST = 254
|
||||||
|
RT_SCOPE_NOWHERE = 255
|
||||||
|
|
||||||
|
# Route#flags
|
||||||
|
RTM_F_NOTIFY = 0x100
|
||||||
|
RTM_F_CLONED = 0x200
|
||||||
|
RTM_F_EQUALIZE = 0x400
|
||||||
|
RTM_F_PREFIX = 0x800
|
||||||
|
|
||||||
|
# Route#table (reserved values)
|
||||||
|
RT_TABLE_UNSPEC = 0
|
||||||
|
RT_TABLE_COMPAT = 252
|
||||||
|
RT_TABLE_DEFAULT = 253
|
||||||
|
RT_TABLE_MAIN = 254
|
||||||
|
RT_TABLE_LOCAL = 255
|
||||||
|
|
||||||
|
# routing message attributes
|
||||||
RTA_UNSPEC = 0
|
RTA_UNSPEC = 0
|
||||||
RTA_DST = 1
|
RTA_DST = 1
|
||||||
RTA_SRC = 2
|
RTA_SRC = 2
|
||||||
@@ -198,4 +220,56 @@ module Netlink
|
|||||||
IFA_ANYCAST = 5
|
IFA_ANYCAST = 5
|
||||||
IFA_CACHEINFO = 6
|
IFA_CACHEINFO = 6
|
||||||
IFA_MULTICAST = 7
|
IFA_MULTICAST = 7
|
||||||
|
|
||||||
|
IFA_F_SECONDARY = 0x01
|
||||||
|
IFA_F_TEMPORARY = IFA_F_SECONDARY
|
||||||
|
IFA_F_NODAD = 0x02
|
||||||
|
IFA_F_OPTIMISTIC = 0x04
|
||||||
|
IFA_F_DADFAILED = 0x08
|
||||||
|
IFA_F_HOMEADDRESS = 0x10
|
||||||
|
IFA_F_DEPRECATED = 0x20
|
||||||
|
IFA_F_TENTATIVE = 0x40
|
||||||
|
IFA_F_PERMANENT = 0x80
|
||||||
|
|
||||||
|
# from linux/if_arp.h
|
||||||
|
ARPHRD_NETROM = 0
|
||||||
|
ARPHRD_ETHER = 1
|
||||||
|
ARPHRD_EETHER = 2
|
||||||
|
ARPHRD_AX25 = 3
|
||||||
|
ARPHRD_PRONET = 4
|
||||||
|
ARPHRD_CHAOS = 5
|
||||||
|
ARPHRD_IEEE802 = 6
|
||||||
|
ARPHRD_ARCNET = 7
|
||||||
|
ARPHRD_APPLETLK = 8
|
||||||
|
ARPHRD_DLCI = 15
|
||||||
|
ARPHRD_ATM = 19
|
||||||
|
ARPHRD_METRICOM = 23
|
||||||
|
ARPHRD_IEEE1394 = 24
|
||||||
|
ARPHRD_EUI64 = 27
|
||||||
|
ARPHRD_INFINIBAND = 32
|
||||||
|
ARPHRD_LOOPBACK = 772
|
||||||
|
# ... others to be added as required
|
||||||
|
|
||||||
|
# linux/if.h
|
||||||
|
IFF_UP = 0x1
|
||||||
|
IFF_BROADCAST = 0x2
|
||||||
|
IFF_DEBUG = 0x4
|
||||||
|
IFF_LOOPBACK = 0x8
|
||||||
|
IFF_POINTOPOINT = 0x10
|
||||||
|
IFF_NOTRAILERS = 0x20
|
||||||
|
IFF_RUNNING = 0x40
|
||||||
|
IFF_NOARP = 0x80
|
||||||
|
IFF_PROMISC = 0x100
|
||||||
|
IFF_ALLMULTI = 0x200
|
||||||
|
IFF_MASTER = 0x400
|
||||||
|
IFF_SLAVE = 0x800
|
||||||
|
IFF_MULTICAST = 0x1000
|
||||||
|
IFF_PORTSEL = 0x2000
|
||||||
|
IFF_AUTOMEDIA = 0x4000
|
||||||
|
IFF_DYNAMIC = 0x8000
|
||||||
|
IFF_LOWER_UP = 0x10000
|
||||||
|
IFF_DORMANT = 0x20000
|
||||||
|
IFF_ECHO = 0x40000
|
||||||
|
IFF_VOLATILE = (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\
|
||||||
|
IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
|
||||||
end
|
end
|
||||||
|
@@ -226,12 +226,12 @@ module Netlink
|
|||||||
|
|
||||||
class Link < RtattrMessage
|
class Link < RtattrMessage
|
||||||
code RTM_NEWLINK, RTM_DELLINK, RTM_GETLINK
|
code RTM_NEWLINK, RTM_DELLINK, RTM_GETLINK
|
||||||
field :family, :uchar
|
field :family, :uchar # Socket::AF_*
|
||||||
field :pad, :uchar
|
field :pad, :uchar
|
||||||
field :type, :ushort
|
field :type, :ushort # ARPHRD_*
|
||||||
field :index, :int
|
field :index, :int
|
||||||
field :flags, :uint
|
field :flags, :uint # IFF_*
|
||||||
field :change, :uint
|
field :change, :uint, :default=>0xffffffff
|
||||||
rtattr :address, IFLA_ADDRESS
|
rtattr :address, IFLA_ADDRESS
|
||||||
rtattr :broadcast, IFLA_BROADCAST
|
rtattr :broadcast, IFLA_BROADCAST
|
||||||
rtattr :ifname, IFLA_IFNAME, :cstring
|
rtattr :ifname, IFLA_IFNAME, :cstring
|
||||||
@@ -260,10 +260,10 @@ module Netlink
|
|||||||
|
|
||||||
class Addr < RtattrMessage
|
class Addr < RtattrMessage
|
||||||
code RTM_NEWADDR, RTM_DELADDR, RTM_GETADDR
|
code RTM_NEWADDR, RTM_DELADDR, RTM_GETADDR
|
||||||
field :family, :uchar
|
field :family, :uchar # Socket::AF_*
|
||||||
field :prefixlen, :uchar
|
field :prefixlen, :uchar
|
||||||
field :flags, :uchar
|
field :flags, :uchar # IFA_F_*
|
||||||
field :scope, :uchar
|
field :scope, :uchar # RT_SCOPE_*
|
||||||
field :index, :int
|
field :index, :int
|
||||||
rtattr :address, IFA_ADDRESS, :l3addr
|
rtattr :address, IFA_ADDRESS, :l3addr
|
||||||
rtattr :local, IFA_LOCAL, :l3addr
|
rtattr :local, IFA_LOCAL, :l3addr
|
||||||
@@ -276,15 +276,15 @@ module Netlink
|
|||||||
|
|
||||||
class Route < RtattrMessage
|
class Route < RtattrMessage
|
||||||
code RTM_NEWROUTE, RTM_DELROUTE, RTM_GETROUTE
|
code RTM_NEWROUTE, RTM_DELROUTE, RTM_GETROUTE
|
||||||
field :family, :uchar
|
field :family, :uchar # Socket::AF_*
|
||||||
field :dst_len, :uchar
|
field :dst_len, :uchar
|
||||||
field :src_len, :uchar
|
field :src_len, :uchar
|
||||||
field :tos, :uchar
|
field :tos, :uchar
|
||||||
field :table, :uchar
|
field :table, :uchar # table id or RT_TABLE_*
|
||||||
field :protocol, :uchar
|
field :protocol, :uchar # RTPROT_*
|
||||||
field :scope, :uchar
|
field :scope, :uchar # RT_SCOPE_*
|
||||||
field :type, :uchar
|
field :type, :uchar # RTN_*
|
||||||
field :flags, :uint
|
field :flags, :uint # RTM_F_*
|
||||||
rtattr :dst, RTA_DST, :l3addr
|
rtattr :dst, RTA_DST, :l3addr
|
||||||
rtattr :src, RTA_SRC, :l3addr
|
rtattr :src, RTA_SRC, :l3addr
|
||||||
rtattr :iif, RTA_IIF, :uint32
|
rtattr :iif, RTA_IIF, :uint32
|
||||||
|
@@ -93,8 +93,10 @@ if __FILE__ == $0
|
|||||||
addrs = nl.addrs_by_index(:family=>Socket::AF_UNSPEC)
|
addrs = nl.addrs_by_index(:family=>Socket::AF_UNSPEC)
|
||||||
routes = nl.routes_by_oif(:family=>Socket::AF_UNSPEC)
|
routes = nl.routes_by_oif(:family=>Socket::AF_UNSPEC)
|
||||||
links.each do |link|
|
links.each do |link|
|
||||||
|
#p link
|
||||||
puts "#{link.ifname}"
|
puts "#{link.ifname}"
|
||||||
addrs[link.index].each do |addr|
|
addrs[link.index].each do |addr|
|
||||||
|
#p addr
|
||||||
puts " family=#{addr.family} #{addr.address}/#{addr.prefixlen} label=#{addr.label}"
|
puts " family=#{addr.family} #{addr.address}/#{addr.prefixlen} label=#{addr.label}"
|
||||||
end
|
end
|
||||||
routes[link.index].each do |route|
|
routes[link.index].each do |route|
|
||||||
|
Reference in New Issue
Block a user