summaryrefslogtreecommitdiffstats
path: root/node-admin/scripts/pyroute2/netlink/rtnl/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'node-admin/scripts/pyroute2/netlink/rtnl/__init__.py')
-rw-r--r--node-admin/scripts/pyroute2/netlink/rtnl/__init__.py156
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}