User Tools

Site Tools


net_device_attributes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
net_device_attributes [2018/08/01 14:41]
rpjday created
net_device_attributes [2018/08/01 15:05]
rpjday
Line 1: Line 1:
 ===== Overview ===== ===== Overview =====
  
-Discussion about how net cable connect and disconnect are reflected in SYSFS.+Discussion about how net cable connect and disconnect are reflected in ''/​sys''​. 
 + 
 +===== /​sys/​class/​net/​enp3s0/​ files ===== 
 + 
 +<​code>​ 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 addr_assign_type 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 address 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 addr_len 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 broadcast 
 +-rw-r--r--. 1 root root 4096 Aug  1 10:41 carrier 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 carrier_changes 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 carrier_down_count 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 carrier_up_count 
 +lrwxrwxrwx. 1 root root    0 Aug  1 07:13 device -> ../​../​../​0000:​03:​00.0 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 dev_id 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 dev_port 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 dormant 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 duplex 
 +-rw-r--r--. 1 root root 4096 Aug  1 10:41 flags 
 +-rw-r--r--. 1 root root 4096 Aug  1 10:41 gro_flush_timeout 
 +-rw-r--r--. 1 root root 4096 Aug  1 10:41 ifalias 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 ifindex 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 iflink 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 link_mode 
 +-rw-r--r--. 1 root root 4096 Aug  1 10:41 mtu 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 name_assign_type 
 +-rw-r--r--. 1 root root 4096 Aug  1 10:41 netdev_group 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 operstate 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 phys_port_id 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 phys_port_name 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 phys_switch_id 
 +drwxr-xr-x. 2 root root    0 Aug  1 10:41 power 
 +-rw-r--r--. 1 root root 4096 Aug  1 10:41 proto_down 
 +drwxr-xr-x. 4 root root    0 Aug  1 10:41 queues 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 speed 
 +drwxr-xr-x. 2 root root    0 Aug  1 10:41 statistics 
 +lrwxrwxrwx. 1 root root    0 Aug  1 07:13 subsystem -> ../​../​../​../​../​../​class/​net 
 +-rw-r--r--. 1 root root 4096 Aug  1 10:41 tx_queue_len 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 type 
 +-rw-r--r--. 1 root root 4096 Aug  1 10:41 uevent 
 +</​code>​ 
 + 
 +In particular, we care about the attributes that reflect physical connection (note how ''​carrier''​ is writeable):​ 
 + 
 +<​code>​ 
 +-rw-r--r--. 1 root root 4096 Aug  1 10:41 carrier ​     [0 or 1] 
 +-r--r--r--. 1 root root 4096 Aug  1 10:41 operstate ​   [up or down] 
 +-rw-r--r--. 1 root root 4096 Aug  1 10:41 flags 
 +</​code>​ 
 + 
 +===== flags ===== 
 + 
 +==== include/​uapi/​linux/​if.h ==== 
 + 
 +<​code>​ 
 +/** 
 + * enum net_device_flags - &struct net_device flags 
 + * 
 + * These are the &struct net_device flags, they can be set by drivers, the 
 + * kernel and some can be triggered by userspace. Userspace can query and 
 + * set these flags using userspace utilities but there is also a sysfs 
 + * entry available for all dev flags which can be queried and set. These flags 
 + * are shared for all types of net_devices. The sysfs entries are available 
 + * via /​sys/​class/​net/<​dev>/​flags. Flags which can be toggled through sysfs 
 + * are annotated below, note that only a few flags can be toggled and some 
 + * other flags are always always preserved from the original net_device flags 
 + * even if you try to set them via sysfs. Flags which are always preserved 
 + * are kept under the flag grouping @IFF_VOLATILE. Flags which are volatile 
 + * are annotated below as such. 
 + * 
 + * You should have a pretty good reason to be extending these flags. 
 + * 
 + * @IFF_UP: interface is up. Can be toggled through sysfs. 
 + * @IFF_BROADCAST:​ broadcast address valid. Volatile. 
 + * @IFF_DEBUG: turn on debugging. Can be toggled through sysfs. 
 + * @IFF_LOOPBACK:​ is a loopback net. Volatile. 
 + * @IFF_POINTOPOINT:​ interface is has p-p link. Volatile. 
 + * @IFF_NOTRAILERS:​ avoid use of trailers. Can be toggled through sysfs. 
 + ​* ​     Volatile. 
 + * @IFF_RUNNING:​ interface RFC2863 OPER_UP. Volatile. 
 + * @IFF_NOARP: no ARP protocol. Can be toggled through sysfs. Volatile. 
 + * @IFF_PROMISC:​ receive all packets. Can be toggled through sysfs. 
 + * @IFF_ALLMULTI:​ receive all multicast packets. Can be toggled through 
 + ​* ​     sysfs. 
 + * @IFF_MASTER:​ master of a load balancer. Volatile. 
 + * @IFF_SLAVE: slave of a load balancer. Volatile. 
 + * @IFF_MULTICAST:​ Supports multicast. Can be toggled through sysfs. 
 + * @IFF_PORTSEL:​ can set media type. Can be toggled through sysfs. 
 + * @IFF_AUTOMEDIA:​ auto media select active. Can be toggled through sysfs. 
 + * @IFF_DYNAMIC:​ dialup device with changing addresses. Can be toggled 
 + ​* ​     through sysfs. 
 + * @IFF_LOWER_UP:​ driver signals L1 up. Volatile. 
 + * @IFF_DORMANT:​ driver signals dormant. Volatile. 
 + * @IFF_ECHO: echo sent packets. Volatile. 
 + */ 
 +enum net_device_flags { 
 +        IFF_UP ​                         = 1<<​0, ​ /* sysfs */ 
 +        IFF_BROADCAST ​                  = 1<<​1, ​ /* volatile */ 
 +        IFF_DEBUG ​                      = 1<<​2, ​ /* sysfs */ 
 +        IFF_LOOPBACK ​                   = 1<<​3, ​ /* volatile */ 
 +        IFF_POINTOPOINT ​                = 1<<​4, ​ /* volatile */ 
 +        IFF_NOTRAILERS ​                 = 1<<​5, ​ /* sysfs */ 
 +        IFF_RUNNING ​                    = 1<<​6, ​ /* volatile */ 
 +        IFF_NOARP ​                      = 1<<​7, ​ /* sysfs */ 
 +        IFF_PROMISC ​                    = 1<<​8, ​ /* sysfs */ 
 +        IFF_ALLMULTI ​                   = 1<<​9, ​ /* sysfs */ 
 +        IFF_MASTER ​                     = 1<<​10,​ /* volatile */ 
 +        IFF_SLAVE ​                      = 1<<​11,​ /* volatile */ 
 +        IFF_MULTICAST ​                  = 1<<​12,​ /* sysfs */ 
 +        IFF_PORTSEL ​                    = 1<<​13,​ /* sysfs */ 
 +        IFF_AUTOMEDIA ​                  = 1<<​14,​ /* sysfs */ 
 +        IFF_DYNAMIC ​                    = 1<<​15,​ /* sysfs */ 
 +        IFF_LOWER_UP ​                   = 1<<​16,​ /* volatile */ 
 +        IFF_DORMANT ​                    = 1<<​17,​ /* volatile */ 
 +        IFF_ECHO ​                       = 1<<​18,​ /* volatile */ 
 +}; 
 + 
 +#define IFF_UP ​                         IFF_UP 
 +#define IFF_BROADCAST ​                  ​IFF_BROADCAST 
 +#define IFF_DEBUG ​                      ​IFF_DEBUG 
 +#define IFF_LOOPBACK ​                   IFF_LOOPBACK 
 +#define IFF_POINTOPOINT ​                ​IFF_POINTOPOINT 
 +#define IFF_NOTRAILERS ​                 IFF_NOTRAILERS 
 +#define IFF_RUNNING ​                    ​IFF_RUNNING 
 +#define IFF_NOARP ​                      ​IFF_NOARP 
 +#define IFF_PROMISC ​                    ​IFF_PROMISC 
 +#define IFF_ALLMULTI ​                   IFF_ALLMULTI 
 +#define IFF_MASTER ​                     IFF_MASTER 
 +#define IFF_SLAVE ​                      ​IFF_SLAVE 
 +#define IFF_MULTICAST ​                  ​IFF_MULTICAST 
 +#define IFF_PORTSEL ​                    ​IFF_PORTSEL 
 +#define IFF_AUTOMEDIA ​                  ​IFF_AUTOMEDIA 
 +#define IFF_DYNAMIC ​                    ​IFF_DYNAMIC 
 +#define IFF_LOWER_UP ​                   IFF_LOWER_UP 
 +#define IFF_DORMANT ​                    ​IFF_DORMANT 
 +#define IFF_ECHO ​                       IFF_ECHO 
 + 
 +#define IFF_VOLATILE ​   (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\ 
 +                IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT) 
 +</​code>​
net_device_attributes.txt · Last modified: 2018/08/01 15:05 by rpjday