134 lines · c
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */2#ifndef __NET_DROPMON_H3#define __NET_DROPMON_H4 5#include <linux/types.h>6#include <linux/netlink.h>7 8struct 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 021#define NET_DM_CFG_ALERT_COUNT 122#define NET_DM_CFG_ALERT_DELAY 223#define NET_DM_CFG_MAX 324 25struct net_dm_config_entry {26 __u32 type;27 __u64 data __attribute__((aligned(8)));28};29 30struct net_dm_config_msg {31 __u32 entries;32 struct net_dm_config_entry options[];33};34 35struct net_dm_alert_msg {36 __u32 entries;37 struct net_dm_drop_point points[];38};39 40struct 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 50enum {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 identifiers68 */69#define NET_DM_GRP_ALERT 170 71enum 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 - 1100};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 along106 * with metadata.107 */108enum net_dm_alert_mode {109 NET_DM_ALERT_MODE_SUMMARY,110 NET_DM_ALERT_MODE_PACKET,111};112 113enum {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 - 1119};120 121enum {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 - 1126};127 128enum net_dm_origin {129 NET_DM_ORIGIN_SW,130 NET_DM_ORIGIN_HW,131};132 133#endif134