~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/uapi/linux/net_dropmon.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
  2 #ifndef __NET_DROPMON_H
  3 #define __NET_DROPMON_H
  4 
  5 #include <linux/types.h>
  6 #include <linux/netlink.h>
  7 
  8 struct net_dm_drop_point {
  9         __u8 pc[8];
 10         __u32 count;
 11 };
 12 
 13 #define is_drop_point_hw(x) do {\
 14         int ____i, ____j;\
 15         for (____i = 0; ____i < 8; i ____i++)\
 16                 ____j |= x[____i];\
 17         ____j;\
 18 } while (0)
 19 
 20 #define NET_DM_CFG_VERSION  0
 21 #define NET_DM_CFG_ALERT_COUNT  1
 22 #define NET_DM_CFG_ALERT_DELAY 2
 23 #define NET_DM_CFG_MAX 3
 24 
 25 struct net_dm_config_entry {
 26         __u32 type;
 27         __u64 data __attribute__((aligned(8)));
 28 };
 29 
 30 struct net_dm_config_msg {
 31         __u32 entries;
 32         struct net_dm_config_entry options[];
 33 };
 34 
 35 struct net_dm_alert_msg {
 36         __u32 entries;
 37         struct net_dm_drop_point points[];
 38 };
 39 
 40 struct net_dm_user_msg {
 41         union {
 42                 struct net_dm_config_msg user;
 43                 struct net_dm_alert_msg alert;
 44         } u;
 45 };
 46 
 47 
 48 /* These are the netlink message types for this protocol */
 49 
 50 enum {
 51         NET_DM_CMD_UNSPEC = 0,
 52         NET_DM_CMD_ALERT,
 53         NET_DM_CMD_CONFIG,
 54         NET_DM_CMD_START,
 55         NET_DM_CMD_STOP,
 56         NET_DM_CMD_PACKET_ALERT,
 57         NET_DM_CMD_CONFIG_GET,
 58         NET_DM_CMD_CONFIG_NEW,
 59         NET_DM_CMD_STATS_GET,
 60         NET_DM_CMD_STATS_NEW,
 61         _NET_DM_CMD_MAX,
 62 };
 63 
 64 #define NET_DM_CMD_MAX (_NET_DM_CMD_MAX - 1)
 65 
 66 /*
 67  * Our group identifiers
 68  */
 69 #define NET_DM_GRP_ALERT 1
 70 
 71 enum net_dm_attr {
 72         NET_DM_ATTR_UNSPEC,
 73 
 74         NET_DM_ATTR_ALERT_MODE,                 /* u8 */
 75         NET_DM_ATTR_PC,                         /* u64 */
 76         NET_DM_ATTR_SYMBOL,                     /* string */
 77         NET_DM_ATTR_IN_PORT,                    /* nested */
 78         NET_DM_ATTR_TIMESTAMP,                  /* u64 */
 79         NET_DM_ATTR_PROTO,                      /* u16 */
 80         NET_DM_ATTR_PAYLOAD,                    /* binary */
 81         NET_DM_ATTR_PAD,
 82         NET_DM_ATTR_TRUNC_LEN,                  /* u32 */
 83         NET_DM_ATTR_ORIG_LEN,                   /* u32 */
 84         NET_DM_ATTR_QUEUE_LEN,                  /* u32 */
 85         NET_DM_ATTR_STATS,                      /* nested */
 86         NET_DM_ATTR_HW_STATS,                   /* nested */
 87         NET_DM_ATTR_ORIGIN,                     /* u16 */
 88         NET_DM_ATTR_HW_TRAP_GROUP_NAME,         /* string */
 89         NET_DM_ATTR_HW_TRAP_NAME,               /* string */
 90         NET_DM_ATTR_HW_ENTRIES,                 /* nested */
 91         NET_DM_ATTR_HW_ENTRY,                   /* nested */
 92         NET_DM_ATTR_HW_TRAP_COUNT,              /* u32 */
 93         NET_DM_ATTR_SW_DROPS,                   /* flag */
 94         NET_DM_ATTR_HW_DROPS,                   /* flag */
 95         NET_DM_ATTR_FLOW_ACTION_COOKIE,         /* binary */
 96         NET_DM_ATTR_REASON,                     /* string */
 97 
 98         __NET_DM_ATTR_MAX,
 99         NET_DM_ATTR_MAX = __NET_DM_ATTR_MAX - 1
100 };
101 
102 /**
103  * enum net_dm_alert_mode - Alert mode.
104  * @NET_DM_ALERT_MODE_SUMMARY: A summary of recent drops is sent to user space.
105  * @NET_DM_ALERT_MODE_PACKET: Each dropped packet is sent to user space along
106  *                            with metadata.
107  */
108 enum net_dm_alert_mode {
109         NET_DM_ALERT_MODE_SUMMARY,
110         NET_DM_ALERT_MODE_PACKET,
111 };
112 
113 enum {
114         NET_DM_ATTR_PORT_NETDEV_IFINDEX,        /* u32 */
115         NET_DM_ATTR_PORT_NETDEV_NAME,           /* string */
116 
117         __NET_DM_ATTR_PORT_MAX,
118         NET_DM_ATTR_PORT_MAX = __NET_DM_ATTR_PORT_MAX - 1
119 };
120 
121 enum {
122         NET_DM_ATTR_STATS_DROPPED,              /* u64 */
123 
124         __NET_DM_ATTR_STATS_MAX,
125         NET_DM_ATTR_STATS_MAX = __NET_DM_ATTR_STATS_MAX - 1
126 };
127 
128 enum net_dm_origin {
129         NET_DM_ORIGIN_SW,
130         NET_DM_ORIGIN_HW,
131 };
132 
133 #endif
134 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php