diff options
author | Neil Horman <nhorman@tuxdriver.com> | 2009-03-11 09:51:26 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-03-13 12:09:29 -0700 |
commit | 9a8afc8d3962f3ed26fd6b56db34133860ed1e72 (patch) | |
tree | fb2cd994dc04e632e9af4fb2c9f6dba056e837fb /include/linux/net_dropmon.h | |
parent | ead2ceb0ec9f85cff19c43b5cdb2f8a054484431 (diff) | |
download | linux-9a8afc8d3962f3ed26fd6b56db34133860ed1e72.tar.gz linux-9a8afc8d3962f3ed26fd6b56db34133860ed1e72.tar.bz2 linux-9a8afc8d3962f3ed26fd6b56db34133860ed1e72.zip |
Network Drop Monitor: Adding drop monitor implementation & Netlink protocol
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
include/linux/net_dropmon.h | 56 +++++++++
net/core/drop_monitor.c | 263 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 319 insertions(+)
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/net_dropmon.h')
-rw-r--r-- | include/linux/net_dropmon.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/include/linux/net_dropmon.h b/include/linux/net_dropmon.h new file mode 100644 index 000000000000..0217fb81a630 --- /dev/null +++ b/include/linux/net_dropmon.h @@ -0,0 +1,56 @@ +#ifndef __NET_DROPMON_H +#define __NET_DROPMON_H + +#include <linux/netlink.h> + +struct net_dm_drop_point { + __u8 pc[8]; + __u32 count; +}; + +#define NET_DM_CFG_VERSION 0 +#define NET_DM_CFG_ALERT_COUNT 1 +#define NET_DM_CFG_ALERT_DELAY 2 +#define NET_DM_CFG_MAX 3 + +struct net_dm_config_entry { + __u32 type; + __u64 data __attribute__((aligned(8))); +}; + +struct net_dm_config_msg { + __u32 entries; + struct net_dm_config_entry options[0]; +}; + +struct net_dm_alert_msg { + __u32 entries; + struct net_dm_drop_point points[0]; +}; + +struct net_dm_user_msg { + union { + struct net_dm_config_msg user; + struct net_dm_alert_msg alert; + } u; +}; + + +/* These are the netlink message types for this protocol */ + +enum { + NET_DM_CMD_UNSPEC = 0, + NET_DM_CMD_ALERT, + NET_DM_CMD_CONFIG, + NET_DM_CMD_START, + NET_DM_CMD_STOP, + _NET_DM_CMD_MAX, +}; + +#define NET_DM_CMD_MAX (_NET_DM_CMD_MAX - 1) + +/* + * Our group identifiers + */ +#define NET_DM_GRP_ALERT 1 +#endif |