The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/netlink/route/interface.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 2022 Alexander V. Chernikov <melifaro@FreeBSD.org>
    5  *
    6  * Redistribution and use in source and binary forms, with or without
    7  * modification, are permitted provided that the following conditions
    8  * are met:
    9  * 1. Redistributions of source code must retain the above copyright
   10  *    notice, this list of conditions and the following disclaimer.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  *
   15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   18  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   25  * SUCH DAMAGE.
   26  */
   27 
   28 /*
   29  * Interface-related (RTM_<NEW|DEL|GET|SET>LINK) message header and attributes.
   30  */
   31 
   32 #ifndef _NETLINK_ROUTE_INTERFACE_H_
   33 #define _NETLINK_ROUTE_INTERFACE_H_
   34 
   35 /* Base header for all of the relevant messages */
   36 struct ifinfomsg {
   37         unsigned char   ifi_family;     /* not used */
   38         unsigned char   __ifi_pad;
   39         unsigned short  ifi_type;       /* ARPHRD_* */
   40         int             ifi_index;      /* Inteface index */
   41         unsigned        ifi_flags;      /* IFF_* flags */
   42         unsigned        ifi_change;     /* IFF_* change mask */
   43 };
   44 
   45 /* Linux-specific link-level state flag */
   46 #define IFF_LOWER_UP    IFF_NETLINK_1
   47 
   48 #ifndef _KERNEL
   49 /* Compatilbility helpers */
   50 #define _IFINFO_HDRLEN          ((int)sizeof(struct ifinfomsg))
   51 #define IFLA_RTA(_ifi)          ((struct rtattr *)NL_ITEM_DATA(_ifi, _IFINFO_HDRLEN))
   52 #define IFLA_PAYLOAD(_ifi)      NLMSG_PAYLOAD(_ifi, _IFINFO_HDRLEN)
   53 #endif
   54 
   55 enum {
   56         IFLA_UNSPEC     = 0,
   57         IFLA_ADDRESS    = 1,    /* binary: Link-level address (MAC) */
   58 #define IFLA_ADDRESS IFLA_ADDRESS
   59         IFLA_BROADCAST  = 2,    /* binary: link-level broadcast address */
   60 #define IFLA_BROADCAST IFLA_BROADCAST
   61         IFLA_IFNAME     = 3,    /* string: Interface name */
   62 #define IFLA_IFNAME IFLA_IFNAME
   63         IFLA_MTU        = 4,    /* u32: Current interface L3 mtu */
   64 #define IFLA_MTU IFLA_MTU
   65         IFLA_LINK       = 5,    /* u32: interface index */
   66 #define IFLA_LINK IFLA_LINK
   67         IFLA_QDISC      = 6,    /* string: Queing policy (not supported) */
   68 #define IFLA_QDISC IFLA_QDISC
   69         IFLA_STATS      = 7,    /* Interface counters */
   70 #define IFLA_STATS IFLA_STATS
   71         IFLA_COST       = 8,    /* not supported */
   72 #define IFLA_COST IFLA_COST
   73         IFLA_PRIORITY   = 9,    /* not supported */
   74 #define IFLA_PRIORITY IFLA_PRIORITY
   75         IFLA_MASTER     = 10,   /* u32: parent interface ifindex */
   76 #define IFLA_MASTER IFLA_MASTER
   77         IFLA_WIRELESS   = 11,   /* not supported */
   78 #define IFLA_WIRELESS IFLA_WIRELESS
   79         IFLA_PROTINFO   = 12,   /* protocol-specific data */
   80 #define IFLA_PROTINFO IFLA_PROTINFO
   81         IFLA_TXQLEN     = 13,   /* u32: transmit queue length */
   82 #define IFLA_TXQLEN IFLA_TXQLEN
   83         IFLA_MAP        = 14,   /* not supported */
   84 #define IFLA_MAP IFLA_MAP
   85         IFLA_WEIGHT     = 15,   /* not supported */
   86 #define IFLA_WEIGHT IFLA_WEIGHT
   87         IFLA_OPERSTATE  = 16,   /* u8: ifOperStatus per RFC 2863 */
   88 #define IFLA_OPERSTATE IFLA_OPERSTATE
   89         IFLA_LINKMODE   = 17,   /* u8: ifmedia (not supported) */
   90 #define IFLA_LINKMODE IFLA_LINKMODE
   91         IFLA_LINKINFO   = 18,   /* nested: IFLA_INFO_ */
   92 #define IFLA_LINKINFO IFLA_LINKINFO
   93         IFLA_NET_NS_PID = 19,   /* u32: vnet id (not supported) */
   94 #define IFLA_NET_NS_PID IFLA_NET_NS_PID
   95         IFLA_IFALIAS    = 20,   /* string: interface description */
   96 #define IFLA_IFALIAS IFLA_IFALIAS
   97         IFLA_NUM_VF     = 21,   /* not supported */
   98 #define IFLA_NUM_VF IFLA_NUM_VF
   99         IFLA_VFINFO_LIST= 22,   /* not supported */
  100 #define IFLA_VFINFO_LIST IFLA_VFINFO_LIST
  101         IFLA_STATS64    = 23,   /* rtnl_link_stats64: iface stats */
  102 #define IFLA_STATS64 IFLA_STATS64
  103         IFLA_VF_PORTS,
  104         IFLA_PORT_SELF,
  105         IFLA_AF_SPEC,
  106         IFLA_GROUP, /* Group the device belongs to */
  107         IFLA_NET_NS_FD,
  108         IFLA_EXT_MASK,    /* Extended info mask, VFs, etc */
  109         IFLA_PROMISCUITY, /* Promiscuity count: > 0 means acts PROMISC */
  110 #define IFLA_PROMISCUITY IFLA_PROMISCUITY
  111         IFLA_NUM_TX_QUEUES,
  112         IFLA_NUM_RX_QUEUES,
  113         IFLA_CARRIER,
  114         IFLA_PHYS_PORT_ID,
  115         IFLA_CARRIER_CHANGES,
  116         IFLA_PHYS_SWITCH_ID,
  117         IFLA_LINK_NETNSID,
  118         IFLA_PHYS_PORT_NAME,
  119         IFLA_PROTO_DOWN,
  120         IFLA_GSO_MAX_SEGS,
  121         IFLA_GSO_MAX_SIZE,
  122         IFLA_PAD,
  123         IFLA_XDP,
  124         IFLA_EVENT,
  125         IFLA_NEW_NETNSID,
  126         IFLA_IF_NETNSID,
  127         IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, /* new alias */
  128         IFLA_CARRIER_UP_COUNT,
  129         IFLA_CARRIER_DOWN_COUNT,
  130         IFLA_NEW_IFINDEX,
  131         IFLA_MIN_MTU,
  132         IFLA_MAX_MTU,
  133         IFLA_PROP_LIST,
  134         IFLA_ALT_IFNAME, /* Alternative ifname */
  135         IFLA_PERM_ADDRESS,
  136         IFLA_PROTO_DOWN_REASON,
  137         __IFLA_MAX
  138 };
  139 #define IFLA_MAX (__IFLA_MAX - 1)
  140 
  141 /*
  142  * Attributes that can be used as filters:
  143  *  IFLA_IFNAME, IFLA_GROUP, IFLA_ALT_IFNAME
  144  * Headers that can be used as filters:
  145  *  ifi_index, ifi_type
  146  */
  147 
  148 /*
  149  * IFLA_OPERSTATE.
  150  * The values below represent the possible
  151  * states of ifOperStatus defined by RFC 2863
  152  */
  153 enum {
  154         IF_OPER_UNKNOWN         = 0, /* status can not be determined */
  155         IF_OPER_NOTPRESENT      = 1, /* some (hardware) component not present */
  156         IF_OPER_DOWN            = 2, /* down */
  157         IF_OPER_LOWERLAYERDOWN  = 3, /* some lower-level interface is down */
  158         IF_OPER_TESTING         = 4, /* in some test mode */
  159         IF_OPER_DORMANT         = 5, /* "up" but waiting for some condition (802.1X) */
  160         IF_OPER_UP              = 6, /* ready to pass packets */
  161 };
  162 
  163 /* IFLA_STATS */
  164 struct rtnl_link_stats {
  165         uint32_t rx_packets;    /* total RX packets (IFCOUNTER_IPACKETS) */
  166         uint32_t tx_packets;    /* total TX packets (IFCOUNTER_OPACKETS) */
  167         uint32_t rx_bytes;      /* total RX bytes (IFCOUNTER_IBYTES) */
  168         uint32_t tx_bytes;      /* total TX bytes (IFCOUNTER_OBYTES) */
  169         uint32_t rx_errors;     /* RX errors (IFCOUNTER_IERRORS) */
  170         uint32_t tx_errors;     /* RX errors (IFCOUNTER_OERRORS) */
  171         uint32_t rx_dropped;    /* RX drop (no space in ring/no bufs) (IFCOUNTER_IQDROPS) */
  172         uint32_t tx_dropped;    /* TX drop (IFCOUNTER_OQDROPS) */
  173         uint32_t multicast;     /* RX multicast packets (IFCOUNTER_IMCASTS) */
  174         uint32_t collisions;    /* not supported */
  175         uint32_t rx_length_errors;      /* not supported */
  176         uint32_t rx_over_errors;        /* not supported */
  177         uint32_t rx_crc_errors;         /* not supported */
  178         uint32_t rx_frame_errors;       /* not supported */
  179         uint32_t rx_fifo_errors;        /* not supported */
  180         uint32_t rx_missed_errors;      /* not supported */
  181         uint32_t tx_aborted_errors;     /* not supported */
  182         uint32_t tx_carrier_errors;     /* not supported */
  183         uint32_t tx_fifo_errors;        /* not supported */
  184         uint32_t tx_heartbeat_errors;   /* not supported */
  185         uint32_t tx_window_errors;      /* not supported */
  186         uint32_t rx_compressed;         /* not supported */
  187         uint32_t tx_compressed;         /* not supported */
  188         uint32_t rx_nohandler;  /* dropped due to no proto handler (IFCOUNTER_NOPROTO) */
  189 };
  190 
  191 /* IFLA_STATS64 */
  192 struct rtnl_link_stats64 {
  193         uint64_t rx_packets;    /* total RX packets (IFCOUNTER_IPACKETS) */
  194         uint64_t tx_packets;    /* total TX packets (IFCOUNTER_OPACKETS) */
  195         uint64_t rx_bytes;      /* total RX bytes (IFCOUNTER_IBYTES) */
  196         uint64_t tx_bytes;      /* total TX bytes (IFCOUNTER_OBYTES) */
  197         uint64_t rx_errors;     /* RX errors (IFCOUNTER_IERRORS) */
  198         uint64_t tx_errors;     /* RX errors (IFCOUNTER_OERRORS) */
  199         uint64_t rx_dropped;    /* RX drop (no space in ring/no bufs) (IFCOUNTER_IQDROPS) */
  200         uint64_t tx_dropped;    /* TX drop (IFCOUNTER_OQDROPS) */
  201         uint64_t multicast;     /* RX multicast packets (IFCOUNTER_IMCASTS) */
  202         uint64_t collisions;    /* not supported */
  203         uint64_t rx_length_errors;      /* not supported */
  204         uint64_t rx_over_errors;        /* not supported */
  205         uint64_t rx_crc_errors;         /* not supported */
  206         uint64_t rx_frame_errors;       /* not supported */
  207         uint64_t rx_fifo_errors;        /* not supported */
  208         uint64_t rx_missed_errors;      /* not supported */
  209         uint64_t tx_aborted_errors;     /* not supported */
  210         uint64_t tx_carrier_errors;     /* not supported */
  211         uint64_t tx_fifo_errors;        /* not supported */
  212         uint64_t tx_heartbeat_errors;   /* not supported */
  213         uint64_t tx_window_errors;      /* not supported */
  214         uint64_t rx_compressed;         /* not supported */
  215         uint64_t tx_compressed;         /* not supported */
  216         uint64_t rx_nohandler;  /* dropped due to no proto handler (IFCOUNTER_NOPROTO) */
  217 };
  218 
  219 /* IFLA_LINKINFO child nlattr types */
  220 enum {
  221         IFLA_INFO_UNSPEC,
  222         IFLA_INFO_KIND          = 1, /* string, link type ("vlan") */
  223         IFLA_INFO_DATA          = 2, /* Per-link-type custom data */
  224         IFLA_INFO_XSTATS        = 3,
  225         IFLA_INFO_SLAVE_KIND    = 4,
  226         IFLA_INFO_SLAVE_DATA    = 5,
  227         __IFLA_INFO_MAX,
  228 };
  229 #define IFLA_INFO_MAX   (__IFLA_INFO_MAX - 1)
  230 
  231 /* IFLA_INFO_DATA vlan attributes */
  232 enum {
  233         IFLA_VLAN_UNSPEC,
  234         IFLA_VLAN_ID,
  235         IFLA_VLAN_FLAGS,
  236         IFLA_VLAN_EGRESS_QOS,
  237         IFLA_VLAN_INGRESS_QOS,
  238         IFLA_VLAN_PROTOCOL,
  239         __IFLA_VLAN_MAX,
  240 };
  241 
  242 #define IFLA_VLAN_MAX   (__IFLA_VLAN_MAX - 1)
  243 struct ifla_vlan_flags {
  244         uint32_t flags;
  245         uint32_t mask;
  246 };
  247 
  248 #endif

Cache object: 9b7241ef79bfb6af22dd2659e3105a22


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.