diff options
Diffstat (limited to 'node-admin/scripts/pyroute2/netlink/rtnl/__init__.py')
-rw-r--r-- | node-admin/scripts/pyroute2/netlink/rtnl/__init__.py | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/node-admin/scripts/pyroute2/netlink/rtnl/__init__.py b/node-admin/scripts/pyroute2/netlink/rtnl/__init__.py new file mode 100644 index 00000000000..fd4c4d03a96 --- /dev/null +++ b/node-admin/scripts/pyroute2/netlink/rtnl/__init__.py @@ -0,0 +1,156 @@ +# By Peter V. Saveliev https://pypi.python.org/pypi/pyroute2. Dual licensed under the Apache 2 and GPLv2+ see https://github.com/svinota/pyroute2 for License details. +''' +RTNetlink: network setup +======================== + +RTNL is a netlink protocol, used to get and set information +about different network objects -- addresses, routes, interfaces +etc. + +RTNL protocol-specific data in messages depends on the object +type. E.g., complete packet with the interface address information:: + + nlmsg header: + + uint32 length + + uint16 type + + uint16 flags + + uint32 sequence number + + uint32 pid + ifaddrmsg structure: + + unsigned char ifa_family + + unsigned char ifa_prefixlen + + unsigned char ifa_flags + + unsigned char ifa_scope + + uint32 ifa_index + [ optional NLA tree ] + +NLA for this kind of packets can be of type IFA_ADDRESS, IFA_LOCAL +etc. -- please refer to the corresponding source. + +Other objects types require different structures, sometimes really +complex. All these structures are described in sources. + +--------------------------- + +Module contents: + +''' +from pyroute2.common import map_namespace + +# RTnetlink multicast groups +RTNLGRP_NONE = 0x0 +RTNLGRP_LINK = 0x1 +RTNLGRP_NOTIFY = 0x2 +RTNLGRP_NEIGH = 0x4 +RTNLGRP_TC = 0x8 +RTNLGRP_IPV4_IFADDR = 0x10 +RTNLGRP_IPV4_MROUTE = 0x20 +RTNLGRP_IPV4_ROUTE = 0x40 +RTNLGRP_IPV4_RULE = 0x80 +RTNLGRP_IPV6_IFADDR = 0x100 +RTNLGRP_IPV6_MROUTE = 0x200 +RTNLGRP_IPV6_ROUTE = 0x400 +RTNLGRP_IPV6_IFINFO = 0x800 +RTNLGRP_DECnet_IFADDR = 0x1000 +RTNLGRP_NOP2 = 0x2000 +RTNLGRP_DECnet_ROUTE = 0x4000 +RTNLGRP_DECnet_RULE = 0x8000 +RTNLGRP_NOP4 = 0x10000 +RTNLGRP_IPV6_PREFIX = 0x20000 +RTNLGRP_IPV6_RULE = 0x40000 + +# Types of messages +# RTM_BASE = 16 +RTM_NEWLINK = 16 +RTM_DELLINK = 17 +RTM_GETLINK = 18 +RTM_SETLINK = 19 +RTM_NEWADDR = 20 +RTM_DELADDR = 21 +RTM_GETADDR = 22 +RTM_NEWROUTE = 24 +RTM_DELROUTE = 25 +RTM_GETROUTE = 26 +RTM_NEWNEIGH = 28 +RTM_DELNEIGH = 29 +RTM_GETNEIGH = 30 +RTM_NEWRULE = 32 +RTM_DELRULE = 33 +RTM_GETRULE = 34 +RTM_NEWQDISC = 36 +RTM_DELQDISC = 37 +RTM_GETQDISC = 38 +RTM_NEWTCLASS = 40 +RTM_DELTCLASS = 41 +RTM_GETTCLASS = 42 +RTM_NEWTFILTER = 44 +RTM_DELTFILTER = 45 +RTM_GETTFILTER = 46 +RTM_NEWACTION = 48 +RTM_DELACTION = 49 +RTM_GETACTION = 50 +RTM_NEWPREFIX = 52 +RTM_GETMULTICAST = 58 +RTM_GETANYCAST = 62 +RTM_NEWNEIGHTBL = 64 +RTM_GETNEIGHTBL = 66 +RTM_SETNEIGHTBL = 67 +# custom message types +RTM_GETBRIDGE = 88 +RTM_SETBRIDGE = 89 +RTM_GETBOND = 90 +RTM_SETBOND = 91 +(RTM_NAMES, RTM_VALUES) = map_namespace('RTM', globals()) + +TC_H_INGRESS = 0xfffffff1 +TC_H_ROOT = 0xffffffff + + +RTNL_GROUPS = RTNLGRP_IPV4_IFADDR |\ + RTNLGRP_IPV6_IFADDR |\ + RTNLGRP_IPV4_ROUTE |\ + RTNLGRP_IPV6_ROUTE |\ + RTNLGRP_NEIGH |\ + RTNLGRP_LINK |\ + RTNLGRP_TC + + +rtypes = {'RTN_UNSPEC': 0, + 'RTN_UNICAST': 1, # Gateway or direct route + 'RTN_LOCAL': 2, # Accept locally + 'RTN_BROADCAST': 3, # Accept locally as broadcast + # send as broadcast + 'RTN_ANYCAST': 4, # Accept locally as broadcast, + # but send as unicast + 'RTN_MULTICAST': 5, # Multicast route + 'RTN_BLACKHOLE': 6, # Drop + 'RTN_UNREACHABLE': 7, # Destination is unreachable + 'RTN_PROHIBIT': 8, # Administratively prohibited + 'RTN_THROW': 9, # Not in this table + 'RTN_NAT': 10, # Translate this address + 'RTN_XRESOLVE': 11} # Use external resolver + +rtprotos = {'RTPROT_UNSPEC': 0, + 'RTPROT_REDIRECT': 1, # Route installed by ICMP redirects; + # not used by current IPv4 + 'RTPROT_KERNEL': 2, # Route installed by kernel + 'RTPROT_BOOT': 3, # Route installed during boot + 'RTPROT_STATIC': 4, # Route installed by administrator + # Values of protocol >= RTPROT_STATIC are not + # interpreted by kernel; + # keep in sync with iproute2 ! + 'RTPROT_GATED': 8, # gated + 'RTPROT_RA': 9, # RDISC/ND router advertisements + 'RTPROT_MRT': 10, # Merit MRT + 'RTPROT_ZEBRA': 11, # Zebra + 'RTPROT_BIRD': 12, # BIRD + 'RTPROT_DNROUTED': 13, # DECnet routing daemon + 'RTPROT_XORP': 14, # XORP + 'RTPROT_NTK': 15, # Netsukuku + 'RTPROT_DHCP': 16} # DHCP client + +rtscopes = {'RT_SCOPE_UNIVERSE': 0, + 'RT_SCOPE_SITE': 200, + 'RT_SCOPE_LINK': 253, + 'RT_SCOPE_HOST': 254, + 'RT_SCOPE_NOWHERE': 255} |