Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

UAPI: (Scripted) Disintegrate include/linux/netfilter_arp

Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Michael Kerrisk <mtk.manpages@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Acked-by: Dave Jones <davej@redhat.com>

+209 -201
-2
include/linux/netfilter_arp/Kbuild
··· 1 - header-y += arp_tables.h 2 - header-y += arpt_mangle.h
+1 -199
include/linux/netfilter_arp/arp_tables.h
··· 5 5 * network byte order. 6 6 * flags are stored in host byte order (of course). 7 7 */ 8 - 9 8 #ifndef _ARPTABLES_H 10 9 #define _ARPTABLES_H 11 10 12 - #ifdef __KERNEL__ 13 11 #include <linux/if.h> 14 12 #include <linux/in.h> 15 13 #include <linux/if_arp.h> 16 14 #include <linux/skbuff.h> 17 - #endif 18 - #include <linux/types.h> 19 - #include <linux/compiler.h> 20 - #include <linux/netfilter_arp.h> 21 - 22 - #include <linux/netfilter/x_tables.h> 23 - 24 - #ifndef __KERNEL__ 25 - #define ARPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN 26 - #define ARPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN 27 - #define arpt_entry_target xt_entry_target 28 - #define arpt_standard_target xt_standard_target 29 - #define arpt_error_target xt_error_target 30 - #define ARPT_CONTINUE XT_CONTINUE 31 - #define ARPT_RETURN XT_RETURN 32 - #define arpt_counters_info xt_counters_info 33 - #define arpt_counters xt_counters 34 - #define ARPT_STANDARD_TARGET XT_STANDARD_TARGET 35 - #define ARPT_ERROR_TARGET XT_ERROR_TARGET 36 - #define ARPT_ENTRY_ITERATE(entries, size, fn, args...) \ 37 - XT_ENTRY_ITERATE(struct arpt_entry, entries, size, fn, ## args) 38 - #endif 39 - 40 - #define ARPT_DEV_ADDR_LEN_MAX 16 41 - 42 - struct arpt_devaddr_info { 43 - char addr[ARPT_DEV_ADDR_LEN_MAX]; 44 - char mask[ARPT_DEV_ADDR_LEN_MAX]; 45 - }; 46 - 47 - /* Yes, Virginia, you have to zero the padding. */ 48 - struct arpt_arp { 49 - /* Source and target IP addr */ 50 - struct in_addr src, tgt; 51 - /* Mask for src and target IP addr */ 52 - struct in_addr smsk, tmsk; 53 - 54 - /* Device hw address length, src+target device addresses */ 55 - __u8 arhln, arhln_mask; 56 - struct arpt_devaddr_info src_devaddr; 57 - struct arpt_devaddr_info tgt_devaddr; 58 - 59 - /* ARP operation code. */ 60 - __be16 arpop, arpop_mask; 61 - 62 - /* ARP hardware address and protocol address format. */ 63 - __be16 arhrd, arhrd_mask; 64 - __be16 arpro, arpro_mask; 65 - 66 - /* The protocol address length is only accepted if it is 4 67 - * so there is no use in offering a way to do filtering on it. 68 - */ 69 - 70 - char iniface[IFNAMSIZ], outiface[IFNAMSIZ]; 71 - unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ]; 72 - 73 - /* Flags word */ 74 - __u8 flags; 75 - /* Inverse flags */ 76 - __u16 invflags; 77 - }; 78 - 79 - /* Values for "flag" field in struct arpt_ip (general arp structure). 80 - * No flags defined yet. 81 - */ 82 - #define ARPT_F_MASK 0x00 /* All possible flag bits mask. */ 83 - 84 - /* Values for "inv" field in struct arpt_arp. */ 85 - #define ARPT_INV_VIA_IN 0x0001 /* Invert the sense of IN IFACE. */ 86 - #define ARPT_INV_VIA_OUT 0x0002 /* Invert the sense of OUT IFACE */ 87 - #define ARPT_INV_SRCIP 0x0004 /* Invert the sense of SRC IP. */ 88 - #define ARPT_INV_TGTIP 0x0008 /* Invert the sense of TGT IP. */ 89 - #define ARPT_INV_SRCDEVADDR 0x0010 /* Invert the sense of SRC DEV ADDR. */ 90 - #define ARPT_INV_TGTDEVADDR 0x0020 /* Invert the sense of TGT DEV ADDR. */ 91 - #define ARPT_INV_ARPOP 0x0040 /* Invert the sense of ARP OP. */ 92 - #define ARPT_INV_ARPHRD 0x0080 /* Invert the sense of ARP HRD. */ 93 - #define ARPT_INV_ARPPRO 0x0100 /* Invert the sense of ARP PRO. */ 94 - #define ARPT_INV_ARPHLN 0x0200 /* Invert the sense of ARP HLN. */ 95 - #define ARPT_INV_MASK 0x03FF /* All possible flag bits mask. */ 96 - 97 - /* This structure defines each of the firewall rules. Consists of 3 98 - parts which are 1) general ARP header stuff 2) match specific 99 - stuff 3) the target to perform if the rule matches */ 100 - struct arpt_entry 101 - { 102 - struct arpt_arp arp; 103 - 104 - /* Size of arpt_entry + matches */ 105 - __u16 target_offset; 106 - /* Size of arpt_entry + matches + target */ 107 - __u16 next_offset; 108 - 109 - /* Back pointer */ 110 - unsigned int comefrom; 111 - 112 - /* Packet and byte counters. */ 113 - struct xt_counters counters; 114 - 115 - /* The matches (if any), then the target. */ 116 - unsigned char elems[0]; 117 - }; 118 - 119 - /* 120 - * New IP firewall options for [gs]etsockopt at the RAW IP level. 121 - * Unlike BSD Linux inherits IP options so you don't have to use a raw 122 - * socket for this. Instead we check rights in the calls. 123 - * 124 - * ATTENTION: check linux/in.h before adding new number here. 125 - */ 126 - #define ARPT_BASE_CTL 96 127 - 128 - #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL) 129 - #define ARPT_SO_SET_ADD_COUNTERS (ARPT_BASE_CTL + 1) 130 - #define ARPT_SO_SET_MAX ARPT_SO_SET_ADD_COUNTERS 131 - 132 - #define ARPT_SO_GET_INFO (ARPT_BASE_CTL) 133 - #define ARPT_SO_GET_ENTRIES (ARPT_BASE_CTL + 1) 134 - /* #define ARPT_SO_GET_REVISION_MATCH (APRT_BASE_CTL + 2) */ 135 - #define ARPT_SO_GET_REVISION_TARGET (ARPT_BASE_CTL + 3) 136 - #define ARPT_SO_GET_MAX (ARPT_SO_GET_REVISION_TARGET) 137 - 138 - /* The argument to ARPT_SO_GET_INFO */ 139 - struct arpt_getinfo { 140 - /* Which table: caller fills this in. */ 141 - char name[XT_TABLE_MAXNAMELEN]; 142 - 143 - /* Kernel fills these in. */ 144 - /* Which hook entry points are valid: bitmask */ 145 - unsigned int valid_hooks; 146 - 147 - /* Hook entry points: one per netfilter hook. */ 148 - unsigned int hook_entry[NF_ARP_NUMHOOKS]; 149 - 150 - /* Underflow points. */ 151 - unsigned int underflow[NF_ARP_NUMHOOKS]; 152 - 153 - /* Number of entries */ 154 - unsigned int num_entries; 155 - 156 - /* Size of entries. */ 157 - unsigned int size; 158 - }; 159 - 160 - /* The argument to ARPT_SO_SET_REPLACE. */ 161 - struct arpt_replace { 162 - /* Which table. */ 163 - char name[XT_TABLE_MAXNAMELEN]; 164 - 165 - /* Which hook entry points are valid: bitmask. You can't 166 - change this. */ 167 - unsigned int valid_hooks; 168 - 169 - /* Number of entries */ 170 - unsigned int num_entries; 171 - 172 - /* Total size of new entries */ 173 - unsigned int size; 174 - 175 - /* Hook entry points. */ 176 - unsigned int hook_entry[NF_ARP_NUMHOOKS]; 177 - 178 - /* Underflow points. */ 179 - unsigned int underflow[NF_ARP_NUMHOOKS]; 180 - 181 - /* Information about old entries: */ 182 - /* Number of counters (must be equal to current number of entries). */ 183 - unsigned int num_counters; 184 - /* The old entries' counters. */ 185 - struct xt_counters __user *counters; 186 - 187 - /* The entries (hang off end: not really an array). */ 188 - struct arpt_entry entries[0]; 189 - }; 190 - 191 - /* The argument to ARPT_SO_GET_ENTRIES. */ 192 - struct arpt_get_entries { 193 - /* Which table: user fills this in. */ 194 - char name[XT_TABLE_MAXNAMELEN]; 195 - 196 - /* User fills this in: total entry size. */ 197 - unsigned int size; 198 - 199 - /* The entries. */ 200 - struct arpt_entry entrytable[0]; 201 - }; 202 - 203 - /* Helper functions */ 204 - static __inline__ struct xt_entry_target *arpt_get_target(struct arpt_entry *e) 205 - { 206 - return (void *)e + e->target_offset; 207 - } 208 - 209 - /* 210 - * Main firewall chains definitions and global var's definitions. 211 - */ 212 - #ifdef __KERNEL__ 15 + #include <uapi/linux/netfilter_arp/arp_tables.h> 213 16 214 17 /* Standard entry. */ 215 18 struct arpt_standard { ··· 77 274 } 78 275 79 276 #endif /* CONFIG_COMPAT */ 80 - #endif /*__KERNEL__*/ 81 277 #endif /* _ARPTABLES_H */
include/linux/netfilter_arp/arpt_mangle.h include/uapi/linux/netfilter_arp/arpt_mangle.h
+2
include/uapi/linux/netfilter_arp/Kbuild
··· 1 1 # UAPI Header export list 2 + header-y += arp_tables.h 3 + header-y += arpt_mangle.h
+206
include/uapi/linux/netfilter_arp/arp_tables.h
··· 1 + /* 2 + * Format of an ARP firewall descriptor 3 + * 4 + * src, tgt, src_mask, tgt_mask, arpop, arpop_mask are always stored in 5 + * network byte order. 6 + * flags are stored in host byte order (of course). 7 + */ 8 + 9 + #ifndef _UAPI_ARPTABLES_H 10 + #define _UAPI_ARPTABLES_H 11 + 12 + #include <linux/types.h> 13 + #include <linux/compiler.h> 14 + #include <linux/netfilter_arp.h> 15 + 16 + #include <linux/netfilter/x_tables.h> 17 + 18 + #ifndef __KERNEL__ 19 + #define ARPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN 20 + #define ARPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN 21 + #define arpt_entry_target xt_entry_target 22 + #define arpt_standard_target xt_standard_target 23 + #define arpt_error_target xt_error_target 24 + #define ARPT_CONTINUE XT_CONTINUE 25 + #define ARPT_RETURN XT_RETURN 26 + #define arpt_counters_info xt_counters_info 27 + #define arpt_counters xt_counters 28 + #define ARPT_STANDARD_TARGET XT_STANDARD_TARGET 29 + #define ARPT_ERROR_TARGET XT_ERROR_TARGET 30 + #define ARPT_ENTRY_ITERATE(entries, size, fn, args...) \ 31 + XT_ENTRY_ITERATE(struct arpt_entry, entries, size, fn, ## args) 32 + #endif 33 + 34 + #define ARPT_DEV_ADDR_LEN_MAX 16 35 + 36 + struct arpt_devaddr_info { 37 + char addr[ARPT_DEV_ADDR_LEN_MAX]; 38 + char mask[ARPT_DEV_ADDR_LEN_MAX]; 39 + }; 40 + 41 + /* Yes, Virginia, you have to zero the padding. */ 42 + struct arpt_arp { 43 + /* Source and target IP addr */ 44 + struct in_addr src, tgt; 45 + /* Mask for src and target IP addr */ 46 + struct in_addr smsk, tmsk; 47 + 48 + /* Device hw address length, src+target device addresses */ 49 + __u8 arhln, arhln_mask; 50 + struct arpt_devaddr_info src_devaddr; 51 + struct arpt_devaddr_info tgt_devaddr; 52 + 53 + /* ARP operation code. */ 54 + __be16 arpop, arpop_mask; 55 + 56 + /* ARP hardware address and protocol address format. */ 57 + __be16 arhrd, arhrd_mask; 58 + __be16 arpro, arpro_mask; 59 + 60 + /* The protocol address length is only accepted if it is 4 61 + * so there is no use in offering a way to do filtering on it. 62 + */ 63 + 64 + char iniface[IFNAMSIZ], outiface[IFNAMSIZ]; 65 + unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ]; 66 + 67 + /* Flags word */ 68 + __u8 flags; 69 + /* Inverse flags */ 70 + __u16 invflags; 71 + }; 72 + 73 + /* Values for "flag" field in struct arpt_ip (general arp structure). 74 + * No flags defined yet. 75 + */ 76 + #define ARPT_F_MASK 0x00 /* All possible flag bits mask. */ 77 + 78 + /* Values for "inv" field in struct arpt_arp. */ 79 + #define ARPT_INV_VIA_IN 0x0001 /* Invert the sense of IN IFACE. */ 80 + #define ARPT_INV_VIA_OUT 0x0002 /* Invert the sense of OUT IFACE */ 81 + #define ARPT_INV_SRCIP 0x0004 /* Invert the sense of SRC IP. */ 82 + #define ARPT_INV_TGTIP 0x0008 /* Invert the sense of TGT IP. */ 83 + #define ARPT_INV_SRCDEVADDR 0x0010 /* Invert the sense of SRC DEV ADDR. */ 84 + #define ARPT_INV_TGTDEVADDR 0x0020 /* Invert the sense of TGT DEV ADDR. */ 85 + #define ARPT_INV_ARPOP 0x0040 /* Invert the sense of ARP OP. */ 86 + #define ARPT_INV_ARPHRD 0x0080 /* Invert the sense of ARP HRD. */ 87 + #define ARPT_INV_ARPPRO 0x0100 /* Invert the sense of ARP PRO. */ 88 + #define ARPT_INV_ARPHLN 0x0200 /* Invert the sense of ARP HLN. */ 89 + #define ARPT_INV_MASK 0x03FF /* All possible flag bits mask. */ 90 + 91 + /* This structure defines each of the firewall rules. Consists of 3 92 + parts which are 1) general ARP header stuff 2) match specific 93 + stuff 3) the target to perform if the rule matches */ 94 + struct arpt_entry 95 + { 96 + struct arpt_arp arp; 97 + 98 + /* Size of arpt_entry + matches */ 99 + __u16 target_offset; 100 + /* Size of arpt_entry + matches + target */ 101 + __u16 next_offset; 102 + 103 + /* Back pointer */ 104 + unsigned int comefrom; 105 + 106 + /* Packet and byte counters. */ 107 + struct xt_counters counters; 108 + 109 + /* The matches (if any), then the target. */ 110 + unsigned char elems[0]; 111 + }; 112 + 113 + /* 114 + * New IP firewall options for [gs]etsockopt at the RAW IP level. 115 + * Unlike BSD Linux inherits IP options so you don't have to use a raw 116 + * socket for this. Instead we check rights in the calls. 117 + * 118 + * ATTENTION: check linux/in.h before adding new number here. 119 + */ 120 + #define ARPT_BASE_CTL 96 121 + 122 + #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL) 123 + #define ARPT_SO_SET_ADD_COUNTERS (ARPT_BASE_CTL + 1) 124 + #define ARPT_SO_SET_MAX ARPT_SO_SET_ADD_COUNTERS 125 + 126 + #define ARPT_SO_GET_INFO (ARPT_BASE_CTL) 127 + #define ARPT_SO_GET_ENTRIES (ARPT_BASE_CTL + 1) 128 + /* #define ARPT_SO_GET_REVISION_MATCH (APRT_BASE_CTL + 2) */ 129 + #define ARPT_SO_GET_REVISION_TARGET (ARPT_BASE_CTL + 3) 130 + #define ARPT_SO_GET_MAX (ARPT_SO_GET_REVISION_TARGET) 131 + 132 + /* The argument to ARPT_SO_GET_INFO */ 133 + struct arpt_getinfo { 134 + /* Which table: caller fills this in. */ 135 + char name[XT_TABLE_MAXNAMELEN]; 136 + 137 + /* Kernel fills these in. */ 138 + /* Which hook entry points are valid: bitmask */ 139 + unsigned int valid_hooks; 140 + 141 + /* Hook entry points: one per netfilter hook. */ 142 + unsigned int hook_entry[NF_ARP_NUMHOOKS]; 143 + 144 + /* Underflow points. */ 145 + unsigned int underflow[NF_ARP_NUMHOOKS]; 146 + 147 + /* Number of entries */ 148 + unsigned int num_entries; 149 + 150 + /* Size of entries. */ 151 + unsigned int size; 152 + }; 153 + 154 + /* The argument to ARPT_SO_SET_REPLACE. */ 155 + struct arpt_replace { 156 + /* Which table. */ 157 + char name[XT_TABLE_MAXNAMELEN]; 158 + 159 + /* Which hook entry points are valid: bitmask. You can't 160 + change this. */ 161 + unsigned int valid_hooks; 162 + 163 + /* Number of entries */ 164 + unsigned int num_entries; 165 + 166 + /* Total size of new entries */ 167 + unsigned int size; 168 + 169 + /* Hook entry points. */ 170 + unsigned int hook_entry[NF_ARP_NUMHOOKS]; 171 + 172 + /* Underflow points. */ 173 + unsigned int underflow[NF_ARP_NUMHOOKS]; 174 + 175 + /* Information about old entries: */ 176 + /* Number of counters (must be equal to current number of entries). */ 177 + unsigned int num_counters; 178 + /* The old entries' counters. */ 179 + struct xt_counters __user *counters; 180 + 181 + /* The entries (hang off end: not really an array). */ 182 + struct arpt_entry entries[0]; 183 + }; 184 + 185 + /* The argument to ARPT_SO_GET_ENTRIES. */ 186 + struct arpt_get_entries { 187 + /* Which table: user fills this in. */ 188 + char name[XT_TABLE_MAXNAMELEN]; 189 + 190 + /* User fills this in: total entry size. */ 191 + unsigned int size; 192 + 193 + /* The entries. */ 194 + struct arpt_entry entrytable[0]; 195 + }; 196 + 197 + /* Helper functions */ 198 + static __inline__ struct xt_entry_target *arpt_get_target(struct arpt_entry *e) 199 + { 200 + return (void *)e + e->target_offset; 201 + } 202 + 203 + /* 204 + * Main firewall chains definitions and global var's definitions. 205 + */ 206 + #endif /* _UAPI_ARPTABLES_H */