1 #ifndef __NET_DROPMON_H 2 #define __NET_DROPMON_H 3 4 #include <linux/types.h> 5 #include <linux/netlink.h> 6 7 struct net_dm_drop_point { 8 __u8 pc[8]; 9 __u32 count; 10 }; 11 12 #define is_drop_point_hw(x) do {\ 13 int ____i, ____j;\ 14 for (____i = 0; ____i < 8; i ____i++)\ 15 ____j |= x[____i];\ 16 ____j;\ 17 } while (0) 18 19 #define NET_DM_CFG_VERSION 0 20 #define NET_DM_CFG_ALERT_COUNT 1 21 #define NET_DM_CFG_ALERT_DELAY 2 22 #define NET_DM_CFG_MAX 3 23 24 struct net_dm_config_entry { 25 __u32 type; 26 __u64 data __attribute__((aligned(8))); 27 }; 28 29 struct net_dm_config_msg { 30 __u32 entries; 31 struct net_dm_config_entry options[0]; 32 }; 33 34 struct net_dm_alert_msg { 35 __u32 entries; 36 struct net_dm_drop_point points[0]; 37 }; 38 39 struct net_dm_user_msg { 40 union { 41 struct net_dm_config_msg user; 42 struct net_dm_alert_msg alert; 43 } u; 44 }; 45 46 47 /* These are the netlink message types for this protocol */ 48 49 enum { 50 NET_DM_CMD_UNSPEC = 0, 51 NET_DM_CMD_ALERT, 52 NET_DM_CMD_CONFIG, 53 NET_DM_CMD_START, 54 NET_DM_CMD_STOP, 55 _NET_DM_CMD_MAX, 56 }; 57 58 #define NET_DM_CMD_MAX (_NET_DM_CMD_MAX - 1) 59 60 /* 61 * Our group identifiers 62 */ 63 #define NET_DM_GRP_ALERT 1 64 #endif 65