Signed-off-by: Felix Fietkau <nbd@nbd.name>master
parent
3d680c5728
commit
d723f2573a
@ -1,79 +0,0 @@ |
|||||||
#ifndef __LINUX_GEN_STATS_H |
|
||||||
#define __LINUX_GEN_STATS_H |
|
||||||
|
|
||||||
#include <linux/types.h> |
|
||||||
|
|
||||||
enum { |
|
||||||
TCA_STATS_UNSPEC, |
|
||||||
TCA_STATS_BASIC, |
|
||||||
TCA_STATS_RATE_EST, |
|
||||||
TCA_STATS_QUEUE, |
|
||||||
TCA_STATS_APP, |
|
||||||
TCA_STATS_RATE_EST64, |
|
||||||
__TCA_STATS_MAX, |
|
||||||
}; |
|
||||||
#define TCA_STATS_MAX (__TCA_STATS_MAX - 1) |
|
||||||
|
|
||||||
/**
|
|
||||||
* struct gnet_stats_basic - byte/packet throughput statistics |
|
||||||
* @bytes: number of seen bytes |
|
||||||
* @packets: number of seen packets |
|
||||||
*/ |
|
||||||
struct gnet_stats_basic |
|
||||||
{ |
|
||||||
__u64 bytes; |
|
||||||
__u32 packets; |
|
||||||
}; |
|
||||||
|
|
||||||
/**
|
|
||||||
* struct gnet_stats_rate_est - rate estimator |
|
||||||
* @bps: current byte rate |
|
||||||
* @pps: current packet rate |
|
||||||
*/ |
|
||||||
struct gnet_stats_rate_est |
|
||||||
{ |
|
||||||
__u32 bps; |
|
||||||
__u32 pps; |
|
||||||
}; |
|
||||||
|
|
||||||
/**
|
|
||||||
* struct gnet_stats_rate_est64 - rate estimator |
|
||||||
* @bps: current byte rate |
|
||||||
* @pps: current packet rate |
|
||||||
*/ |
|
||||||
struct gnet_stats_rate_est64 |
|
||||||
{ |
|
||||||
__u64 bps; |
|
||||||
__u64 pps; |
|
||||||
}; |
|
||||||
|
|
||||||
/**
|
|
||||||
* struct gnet_stats_queue - queuing statistics |
|
||||||
* @qlen: queue length |
|
||||||
* @backlog: backlog size of queue |
|
||||||
* @drops: number of dropped packets |
|
||||||
* @requeues: number of requeues |
|
||||||
* @overlimits: number of enqueues over the limit |
|
||||||
*/ |
|
||||||
struct gnet_stats_queue |
|
||||||
{ |
|
||||||
__u32 qlen; |
|
||||||
__u32 backlog; |
|
||||||
__u32 drops; |
|
||||||
__u32 requeues; |
|
||||||
__u32 overlimits; |
|
||||||
}; |
|
||||||
|
|
||||||
/**
|
|
||||||
* struct gnet_estimator - rate estimator configuration |
|
||||||
* @interval: sampling period |
|
||||||
* @ewma_log: the log of measurement window weight |
|
||||||
*/ |
|
||||||
struct gnet_estimator |
|
||||||
{ |
|
||||||
signed char interval; |
|
||||||
unsigned char ewma_log; |
|
||||||
}; |
|
||||||
|
|
||||||
|
|
||||||
#endif /* __LINUX_GEN_STATS_H */ |
|
@ -1,83 +0,0 @@ |
|||||||
#ifndef __LINUX_GENERIC_NETLINK_H |
|
||||||
#define __LINUX_GENERIC_NETLINK_H |
|
||||||
|
|
||||||
#include <linux/types.h> |
|
||||||
#include <linux/netlink.h> |
|
||||||
|
|
||||||
#define GENL_NAMSIZ 16 /* length of family name */ |
|
||||||
|
|
||||||
#define GENL_MIN_ID NLMSG_MIN_TYPE |
|
||||||
#define GENL_MAX_ID 1023 |
|
||||||
|
|
||||||
struct genlmsghdr { |
|
||||||
__u8 cmd; |
|
||||||
__u8 version; |
|
||||||
__u16 reserved; |
|
||||||
}; |
|
||||||
|
|
||||||
#define GENL_HDRLEN NLMSG_ALIGN(sizeof(struct genlmsghdr)) |
|
||||||
|
|
||||||
#define GENL_ADMIN_PERM 0x01 |
|
||||||
#define GENL_CMD_CAP_DO 0x02 |
|
||||||
#define GENL_CMD_CAP_DUMP 0x04 |
|
||||||
#define GENL_CMD_CAP_HASPOL 0x08 |
|
||||||
|
|
||||||
/*
|
|
||||||
* List of reserved static generic netlink identifiers: |
|
||||||
*/ |
|
||||||
#define GENL_ID_GENERATE 0 |
|
||||||
#define GENL_ID_CTRL NLMSG_MIN_TYPE |
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* Controller |
|
||||||
**************************************************************************/ |
|
||||||
|
|
||||||
enum { |
|
||||||
CTRL_CMD_UNSPEC, |
|
||||||
CTRL_CMD_NEWFAMILY, |
|
||||||
CTRL_CMD_DELFAMILY, |
|
||||||
CTRL_CMD_GETFAMILY, |
|
||||||
CTRL_CMD_NEWOPS, |
|
||||||
CTRL_CMD_DELOPS, |
|
||||||
CTRL_CMD_GETOPS, |
|
||||||
CTRL_CMD_NEWMCAST_GRP, |
|
||||||
CTRL_CMD_DELMCAST_GRP, |
|
||||||
CTRL_CMD_GETMCAST_GRP, /* unused */ |
|
||||||
__CTRL_CMD_MAX, |
|
||||||
}; |
|
||||||
|
|
||||||
#define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1) |
|
||||||
|
|
||||||
enum { |
|
||||||
CTRL_ATTR_UNSPEC, |
|
||||||
CTRL_ATTR_FAMILY_ID, |
|
||||||
CTRL_ATTR_FAMILY_NAME, |
|
||||||
CTRL_ATTR_VERSION, |
|
||||||
CTRL_ATTR_HDRSIZE, |
|
||||||
CTRL_ATTR_MAXATTR, |
|
||||||
CTRL_ATTR_OPS, |
|
||||||
CTRL_ATTR_MCAST_GROUPS, |
|
||||||
__CTRL_ATTR_MAX, |
|
||||||
}; |
|
||||||
|
|
||||||
#define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1) |
|
||||||
|
|
||||||
enum { |
|
||||||
CTRL_ATTR_OP_UNSPEC, |
|
||||||
CTRL_ATTR_OP_ID, |
|
||||||
CTRL_ATTR_OP_FLAGS, |
|
||||||
__CTRL_ATTR_OP_MAX, |
|
||||||
}; |
|
||||||
|
|
||||||
#define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1) |
|
||||||
|
|
||||||
enum { |
|
||||||
CTRL_ATTR_MCAST_GRP_UNSPEC, |
|
||||||
CTRL_ATTR_MCAST_GRP_NAME, |
|
||||||
CTRL_ATTR_MCAST_GRP_ID, |
|
||||||
__CTRL_ATTR_MCAST_GRP_MAX, |
|
||||||
}; |
|
||||||
|
|
||||||
#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1) |
|
||||||
|
|
||||||
#endif /* __LINUX_GENERIC_NETLINK_H */ |
|
@ -1,131 +0,0 @@ |
|||||||
/*
|
|
||||||
* INET An implementation of the TCP/IP protocol suite for the LINUX |
|
||||||
* operating system. INET is implemented using the BSD Socket |
|
||||||
* interface as the means of communication with the user level. |
|
||||||
* |
|
||||||
* Global definitions for the INET interface module. |
|
||||||
* |
|
||||||
* Version: @(#)if.h 1.0.2 04/18/93 |
|
||||||
* |
|
||||||
* Authors: Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988 |
|
||||||
* Ross Biro |
|
||||||
* Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> |
|
||||||
* |
|
||||||
* This program is free software; you can redistribute it and/or |
|
||||||
* modify it under the terms of the GNU General Public License |
|
||||||
* as published by the Free Software Foundation; either version |
|
||||||
* 2 of the License, or (at your option) any later version. |
|
||||||
*/ |
|
||||||
#ifndef _LINUX_IF_H |
|
||||||
#define _LINUX_IF_H |
|
||||||
|
|
||||||
#include <linux/types.h> /* for "__kernel_caddr_t" et al */ |
|
||||||
|
|
||||||
#define IFNAMSIZ 16 |
|
||||||
|
|
||||||
/* Standard interface flags (netdevice->flags). */ |
|
||||||
#define IFF_UP 0x1 /* interface is up */ |
|
||||||
#define IFF_BROADCAST 0x2 /* broadcast address valid */ |
|
||||||
#define IFF_DEBUG 0x4 /* turn on debugging */ |
|
||||||
#define IFF_LOOPBACK 0x8 /* is a loopback net */ |
|
||||||
#define IFF_POINTOPOINT 0x10 /* interface is has p-p link */ |
|
||||||
#define IFF_NOTRAILERS 0x20 /* avoid use of trailers */ |
|
||||||
#define IFF_RUNNING 0x40 /* interface RFC2863 OPER_UP */ |
|
||||||
#define IFF_NOARP 0x80 /* no ARP protocol */ |
|
||||||
#define IFF_PROMISC 0x100 /* receive all packets */ |
|
||||||
#define IFF_ALLMULTI 0x200 /* receive all multicast packets*/ |
|
||||||
|
|
||||||
#define IFF_MASTER 0x400 /* master of a load balancer */ |
|
||||||
#define IFF_SLAVE 0x800 /* slave of a load balancer */ |
|
||||||
|
|
||||||
#define IFF_MULTICAST 0x1000 /* Supports multicast */ |
|
||||||
|
|
||||||
#define IFF_PORTSEL 0x2000 /* can set media type */ |
|
||||||
#define IFF_AUTOMEDIA 0x4000 /* auto media select active */ |
|
||||||
#define IFF_DYNAMIC 0x8000 /* dialup device with changing addresses*/ |
|
||||||
|
|
||||||
#define IFF_LOWER_UP 0x10000 /* driver signals L1 up */ |
|
||||||
#define IFF_DORMANT 0x20000 /* driver signals dormant */ |
|
||||||
|
|
||||||
#define IFF_ECHO 0x40000 /* echo sent packets */ |
|
||||||
|
|
||||||
#define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\ |
|
||||||
IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT) |
|
||||||
|
|
||||||
/* Private (from user) interface flags (netdevice->priv_flags). */ |
|
||||||
#define IFF_802_1Q_VLAN 0x1 /* 802.1Q VLAN device. */ |
|
||||||
#define IFF_EBRIDGE 0x2 /* Ethernet bridging device. */ |
|
||||||
#define IFF_SLAVE_INACTIVE 0x4 /* bonding slave not the curr. active */ |
|
||||||
#define IFF_MASTER_8023AD 0x8 /* bonding master, 802.3ad. */ |
|
||||||
#define IFF_MASTER_ALB 0x10 /* bonding master, balance-alb. */ |
|
||||||
#define IFF_BONDING 0x20 /* bonding master or slave */ |
|
||||||
#define IFF_SLAVE_NEEDARP 0x40 /* need ARPs for validation */ |
|
||||||
#define IFF_ISATAP 0x80 /* ISATAP interface (RFC4214) */ |
|
||||||
|
|
||||||
#define IF_GET_IFACE 0x0001 /* for querying only */ |
|
||||||
#define IF_GET_PROTO 0x0002 |
|
||||||
|
|
||||||
/* For definitions see hdlc.h */ |
|
||||||
#define IF_IFACE_V35 0x1000 /* V.35 serial interface */ |
|
||||||
#define IF_IFACE_V24 0x1001 /* V.24 serial interface */ |
|
||||||
#define IF_IFACE_X21 0x1002 /* X.21 serial interface */ |
|
||||||
#define IF_IFACE_T1 0x1003 /* T1 telco serial interface */ |
|
||||||
#define IF_IFACE_E1 0x1004 /* E1 telco serial interface */ |
|
||||||
#define IF_IFACE_SYNC_SERIAL 0x1005 /* can't be set by software */ |
|
||||||
#define IF_IFACE_X21D 0x1006 /* X.21 Dual Clocking (FarSite) */ |
|
||||||
|
|
||||||
/* For definitions see hdlc.h */ |
|
||||||
#define IF_PROTO_HDLC 0x2000 /* raw HDLC protocol */ |
|
||||||
#define IF_PROTO_PPP 0x2001 /* PPP protocol */ |
|
||||||
#define IF_PROTO_CISCO 0x2002 /* Cisco HDLC protocol */ |
|
||||||
#define IF_PROTO_FR 0x2003 /* Frame Relay protocol */ |
|
||||||
#define IF_PROTO_FR_ADD_PVC 0x2004 /* Create FR PVC */ |
|
||||||
#define IF_PROTO_FR_DEL_PVC 0x2005 /* Delete FR PVC */ |
|
||||||
#define IF_PROTO_X25 0x2006 /* X.25 */ |
|
||||||
#define IF_PROTO_HDLC_ETH 0x2007 /* raw HDLC, Ethernet emulation */ |
|
||||||
#define IF_PROTO_FR_ADD_ETH_PVC 0x2008 /* Create FR Ethernet-bridged PVC */ |
|
||||||
#define IF_PROTO_FR_DEL_ETH_PVC 0x2009 /* Delete FR Ethernet-bridged PVC */ |
|
||||||
#define IF_PROTO_FR_PVC 0x200A /* for reading PVC status */ |
|
||||||
#define IF_PROTO_FR_ETH_PVC 0x200B |
|
||||||
#define IF_PROTO_RAW 0x200C /* RAW Socket */ |
|
||||||
|
|
||||||
/* RFC 2863 operational status */ |
|
||||||
enum { |
|
||||||
IF_OPER_UNKNOWN, |
|
||||||
IF_OPER_NOTPRESENT, |
|
||||||
IF_OPER_DOWN, |
|
||||||
IF_OPER_LOWERLAYERDOWN, |
|
||||||
IF_OPER_TESTING, |
|
||||||
IF_OPER_DORMANT, |
|
||||||
IF_OPER_UP, |
|
||||||
}; |
|
||||||
|
|
||||||
/* link modes */ |
|
||||||
enum { |
|
||||||
IF_LINK_MODE_DEFAULT, |
|
||||||
IF_LINK_MODE_DORMANT, /* limit upward transition to dormant */ |
|
||||||
}; |
|
||||||
|
|
||||||
/*
|
|
||||||
* Device mapping structure. I'd just gone off and designed a
|
|
||||||
* beautiful scheme using only loadable modules with arguments |
|
||||||
* for driver options and along come the PCMCIA people 8) |
|
||||||
* |
|
||||||
* Ah well. The get() side of this is good for WDSETUP, and it'll |
|
||||||
* be handy for debugging things. The set side is fine for now and |
|
||||||
* being very small might be worth keeping for clean configuration. |
|
||||||
*/ |
|
||||||
|
|
||||||
struct ifmap
|
|
||||||
{ |
|
||||||
unsigned long mem_start; |
|
||||||
unsigned long mem_end; |
|
||||||
unsigned short base_addr;
|
|
||||||
unsigned char irq; |
|
||||||
unsigned char dma; |
|
||||||
unsigned char port; |
|
||||||
/* 3 bytes spare */ |
|
||||||
}; |
|
||||||
|
|
||||||
|
|
||||||
#endif /* _LINUX_IF_H */ |
|
@ -1,62 +0,0 @@ |
|||||||
#ifndef __LINUX_IF_ADDR_H |
|
||||||
#define __LINUX_IF_ADDR_H |
|
||||||
|
|
||||||
#include <linux/netlink.h> |
|
||||||
|
|
||||||
struct ifaddrmsg |
|
||||||
{ |
|
||||||
__u8 ifa_family; |
|
||||||
__u8 ifa_prefixlen; /* The prefix length */ |
|
||||||
__u8 ifa_flags; /* Flags */ |
|
||||||
__u8 ifa_scope; /* Address scope */ |
|
||||||
__u32 ifa_index; /* Link index */ |
|
||||||
}; |
|
||||||
|
|
||||||
/*
|
|
||||||
* Important comment: |
|
||||||
* IFA_ADDRESS is prefix address, rather than local interface address. |
|
||||||
* It makes no difference for normally configured broadcast interfaces, |
|
||||||
* but for point-to-point IFA_ADDRESS is DESTINATION address, |
|
||||||
* local address is supplied in IFA_LOCAL attribute. |
|
||||||
*/ |
|
||||||
enum |
|
||||||
{ |
|
||||||
IFA_UNSPEC, |
|
||||||
IFA_ADDRESS, |
|
||||||
IFA_LOCAL, |
|
||||||
IFA_LABEL, |
|
||||||
IFA_BROADCAST, |
|
||||||
IFA_ANYCAST, |
|
||||||
IFA_CACHEINFO, |
|
||||||
IFA_MULTICAST, |
|
||||||
__IFA_MAX, |
|
||||||
}; |
|
||||||
|
|
||||||
#define IFA_MAX (__IFA_MAX - 1) |
|
||||||
|
|
||||||
/* ifa_flags */ |
|
||||||
#define IFA_F_SECONDARY 0x01 |
|
||||||
#define IFA_F_TEMPORARY IFA_F_SECONDARY |
|
||||||
|
|
||||||
#define IFA_F_NODAD 0x02 |
|
||||||
#define IFA_F_OPTIMISTIC 0x04 |
|
||||||
#define IFA_F_HOMEADDRESS 0x10 |
|
||||||
#define IFA_F_DEPRECATED 0x20 |
|
||||||
#define IFA_F_TENTATIVE 0x40 |
|
||||||
#define IFA_F_PERMANENT 0x80 |
|
||||||
|
|
||||||
struct ifa_cacheinfo |
|
||||||
{ |
|
||||||
__u32 ifa_prefered; |
|
||||||
__u32 ifa_valid; |
|
||||||
__u32 cstamp; /* created timestamp, hundredths of seconds */ |
|
||||||
__u32 tstamp; /* updated timestamp, hundredths of seconds */ |
|
||||||
}; |
|
||||||
|
|
||||||
/* backwards compatibility for userspace */ |
|
||||||
#ifndef __KERNEL__ |
|
||||||
#define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg)))) |
|
||||||
#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg)) |
|
||||||
#endif |
|
||||||
|
|
||||||
#endif |
|
@ -1,151 +0,0 @@ |
|||||||
#ifndef __LINUX_NETLINK_H |
|
||||||
#define __LINUX_NETLINK_H |
|
||||||
|
|
||||||
#include <linux/socket.h> /* for sa_family_t */ |
|
||||||
#include <linux/types.h> |
|
||||||
#include <sys/socket.h> /* for sa_family_t */ |
|
||||||
|
|
||||||
#define NETLINK_ROUTE 0 /* Routing/device hook */ |
|
||||||
#define NETLINK_UNUSED 1 /* Unused number */ |
|
||||||
#define NETLINK_USERSOCK 2 /* Reserved for user mode socket protocols */ |
|
||||||
#define NETLINK_FIREWALL 3 /* Firewalling hook */ |
|
||||||
#define NETLINK_INET_DIAG 4 /* INET socket monitoring */ |
|
||||||
#define NETLINK_NFLOG 5 /* netfilter/iptables ULOG */ |
|
||||||
#define NETLINK_XFRM 6 /* ipsec */ |
|
||||||
#define NETLINK_SELINUX 7 /* SELinux event notifications */ |
|
||||||
#define NETLINK_ISCSI 8 /* Open-iSCSI */ |
|
||||||
#define NETLINK_AUDIT 9 /* auditing */ |
|
||||||
#define NETLINK_FIB_LOOKUP 10 |
|
||||||
#define NETLINK_CONNECTOR 11 |
|
||||||
#define NETLINK_NETFILTER 12 /* netfilter subsystem */ |
|
||||||
#define NETLINK_IP6_FW 13 |
|
||||||
#define NETLINK_DNRTMSG 14 /* DECnet routing messages */ |
|
||||||
#define NETLINK_KOBJECT_UEVENT 15 /* Kernel messages to userspace */ |
|
||||||
#define NETLINK_GENERIC 16 |
|
||||||
/* leave room for NETLINK_DM (DM Events) */ |
|
||||||
#define NETLINK_SCSITRANSPORT 18 /* SCSI Transports */ |
|
||||||
#define NETLINK_ECRYPTFS 19 |
|
||||||
|
|
||||||
#define MAX_LINKS 32 |
|
||||||
|
|
||||||
struct sockaddr_nl |
|
||||||
{ |
|
||||||
sa_family_t nl_family; /* AF_NETLINK */ |
|
||||||
unsigned short nl_pad; /* zero */ |
|
||||||
__u32 nl_pid; /* port ID */ |
|
||||||
__u32 nl_groups; /* multicast groups mask */ |
|
||||||
}; |
|
||||||
|
|
||||||
struct nlmsghdr |
|
||||||
{ |
|
||||||
__u32 nlmsg_len; /* Length of message including header */ |
|
||||||
__u16 nlmsg_type; /* Message content */ |
|
||||||
__u16 nlmsg_flags; /* Additional flags */ |
|
||||||
__u32 nlmsg_seq; /* Sequence number */ |
|
||||||
__u32 nlmsg_pid; /* Sending process port ID */ |
|
||||||
}; |
|
||||||
|
|
||||||
/* Flags values */ |
|
||||||
|
|
||||||
#define NLM_F_REQUEST 1 /* It is request message. */ |
|
||||||
#define NLM_F_MULTI 2 /* Multipart message, terminated by NLMSG_DONE */ |
|
||||||
#define NLM_F_ACK 4 /* Reply with ack, with zero or error code */ |
|
||||||
#define NLM_F_ECHO 8 /* Echo this request */ |
|
||||||
|
|
||||||
/* Modifiers to GET request */ |
|
||||||
#define NLM_F_ROOT 0x100 /* specify tree root */ |
|
||||||
#define NLM_F_MATCH 0x200 /* return all matching */ |
|
||||||
#define NLM_F_ATOMIC 0x400 /* atomic GET */ |
|
||||||
#define NLM_F_DUMP (NLM_F_ROOT|NLM_F_MATCH) |
|
||||||
|
|
||||||
/* Modifiers to NEW request */ |
|
||||||
#define NLM_F_REPLACE 0x100 /* Override existing */ |
|
||||||
#define NLM_F_EXCL 0x200 /* Do not touch, if it exists */ |
|
||||||
#define NLM_F_CREATE 0x400 /* Create, if it does not exist */ |
|
||||||
#define NLM_F_APPEND 0x800 /* Add to end of list */ |
|
||||||
|
|
||||||
/*
|
|
||||||
4.4BSD ADD NLM_F_CREATE|NLM_F_EXCL |
|
||||||
4.4BSD CHANGE NLM_F_REPLACE |
|
||||||
|
|
||||||
True CHANGE NLM_F_CREATE|NLM_F_REPLACE |
|
||||||
Append NLM_F_CREATE |
|
||||||
Check NLM_F_EXCL |
|
||||||
*/ |
|
||||||
|
|
||||||
#define NLMSG_ALIGNTO 4 |
|
||||||
#define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) ) |
|
||||||
#define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr))) |
|
||||||
#define NLMSG_LENGTH(len) ((len)+NLMSG_ALIGN(NLMSG_HDRLEN)) |
|
||||||
#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len)) |
|
||||||
#define NLMSG_DATA(nlh) ((void*)(((char*)nlh) + NLMSG_LENGTH(0))) |
|
||||||
#define NLMSG_NEXT(nlh,len) ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), \ |
|
||||||
(struct nlmsghdr*)(((char*)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len))) |
|
||||||
#define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) && \ |
|
||||||
(nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && \
|
|
||||||
(nlh)->nlmsg_len <= (len)) |
|
||||||
#define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len))) |
|
||||||
|
|
||||||
#define NLMSG_NOOP 0x1 /* Nothing. */ |
|
||||||
#define NLMSG_ERROR 0x2 /* Error */ |
|
||||||
#define NLMSG_DONE 0x3 /* End of a dump */ |
|
||||||
#define NLMSG_OVERRUN 0x4 /* Data lost */ |
|
||||||
|
|
||||||
#define NLMSG_MIN_TYPE 0x10 /* < 0x10: reserved control messages */ |
|
||||||
|
|
||||||
struct nlmsgerr |
|
||||||
{ |
|
||||||
int error; |
|
||||||
struct nlmsghdr msg; |
|
||||||
}; |
|
||||||
|
|
||||||
#define NETLINK_ADD_MEMBERSHIP 1 |
|
||||||
#define NETLINK_DROP_MEMBERSHIP 2 |
|
||||||
#define NETLINK_PKTINFO 3 |
|
||||||
|
|
||||||
struct nl_pktinfo |
|
||||||
{ |
|
||||||
__u32 group; |
|
||||||
}; |
|
||||||
|
|
||||||
#define NET_MAJOR 36 /* Major 36 is reserved for networking */ |
|
||||||
|
|
||||||
enum { |
|
||||||
NETLINK_UNCONNECTED = 0, |
|
||||||
NETLINK_CONNECTED, |
|
||||||
}; |
|
||||||
|
|
||||||
/*
|
|
||||||
* <------- NLA_HDRLEN ------> <-- NLA_ALIGN(payload)--> |
|
||||||
* +---------------------+- - -+- - - - - - - - - -+- - -+ |
|
||||||
* | Header | Pad | Payload | Pad | |
|
||||||
* | (struct nlattr) | ing | | ing | |
|
||||||
* +---------------------+- - -+- - - - - - - - - -+- - -+ |
|
||||||
* <-------------- nlattr->nla_len --------------> |
|
||||||
*/ |
|
||||||
|
|
||||||
struct nlattr |
|
||||||
{ |
|
||||||
__u16 nla_len; |
|
||||||
__u16 nla_type; |
|
||||||
}; |
|
||||||
|
|
||||||
/*
|
|
||||||
* nla_type (16 bits) |
|
||||||
* +---+---+-------------------------------+ |
|
||||||
* | N | O | Attribute Type | |
|
||||||
* +---+---+-------------------------------+ |
|
||||||
* N := Carries nested attributes |
|
||||||
* O := Payload stored in network byte order |
|
||||||
* |
|
||||||
* Note: The N and O flag are mutually exclusive. |
|
||||||
*/ |
|
||||||
#define NLA_F_NESTED (1 << 15) |
|
||||||
#define NLA_F_NET_BYTEORDER (1 << 14) |
|
||||||
#define NLA_TYPE_MASK ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER) |
|
||||||
|
|
||||||
#define NLA_ALIGNTO 4 |
|
||||||
#define NLA_ALIGN(len) (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1)) |
|
||||||
#define NLA_HDRLEN ((int) NLA_ALIGN(sizeof(struct nlattr))) |
|
||||||
|
|
||||||
#endif /* __LINUX_NETLINK_H */ |
|
Loading…
Reference in new issue