Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ipp_up_and_iff_running [2018/08/25 17:21] – [net/core/dev_ioctl.c] rpjdayipp_up_and_iff_running [2018/08/27 11:03] (current) – [net/core/dev_ioctl.c] rpjday
Line 8: Line 8:
  
 ===== Flags ===== ===== Flags =====
 +
 +Issues:
 +
 +  * Is ''IFF_LOWER_UP'' significant?
 +  * Can we use ''IFF_DEBUG''?
 +  * Understand actual meaning of "volatile".
  
 From ''include/uapi/linux/if.h'': From ''include/uapi/linux/if.h'':
  
 <code> <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 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 { enum net_device_flags {
 /* for compatibility with glibc net/if.h */ /* for compatibility with glibc net/if.h */
Line 97: Line 144:
         RX errors 0  dropped 0  overruns 0  frame 0         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 36836  bytes 9042100 (8.6 MiB)         TX packets 36836  bytes 9042100 (8.6 MiB)
 +        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 +</code>
 +
 +==== Up again ====
 +
 +UP, shortly followed by RUNNING:
 +
 +<code>
 +enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
 +        inet 192.168.0.15  netmask 255.255.255.0  broadcast 192.168.0.255
 +        inet6 fd00:f81d:f81:4062:2e56:dcff:fe25:ad47  prefixlen 64  scopeid 0x0<global>
 +        inet6 fe80::2e56:dcff:fe25:ad47  prefixlen 64  scopeid 0x20<link>
 +        ether 2c:56:dc:25:ad:47  txqueuelen 1000  (Ethernet)
 +        RX packets 1268514  bytes 1611028865 (1.5 GiB)
 +        RX errors 0  dropped 0  overruns 0  frame 0
 +        TX packets 396222  bytes 65965632 (62.9 MiB)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 </code> </code>
Line 119: Line 182:
  
 ==== net/core/dev_ioctl.c ==== ==== net/core/dev_ioctl.c ====
 +
 +This is how ''ifconfig'' gets its info -- via ''dev_get_flags()'' and ioctl command ''SIOCGIFFLAGS'':
  
 <code> <code>
Line 139: Line 204:
  
 ==== net/core/dev.c ==== ==== net/core/dev.c ====
 +
 +Volatile flags are supported via RFC2863 operstates.
  
 <code> <code>
  • ipp_up_and_iff_running.1535217700.txt.gz
  • Last modified: 2018/08/25 17:21
  • by rpjday