]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/linux/netfilter_arp/arp_tables.h
[NETFILTER]: netfilter misc annotations
[karo-tx-linux.git] / include / linux / netfilter_arp / arp_tables.h
index fd21796e513141af6f77239a9ddd9a1df06f956e..44e39b61d9e7e3b11e4b3e863204b4a89bb8cd1b 100644 (file)
@@ -46,11 +46,11 @@ struct arpt_arp {
        struct arpt_devaddr_info tgt_devaddr;
 
        /* ARP operation code. */
-       u_int16_t arpop, arpop_mask;
+       __be16 arpop, arpop_mask;
 
        /* ARP hardware address and protocol address format. */
-       u_int16_t arhrd, arhrd_mask;
-       u_int16_t arpro, arpro_mask;
+       __be16 arhrd, arhrd_mask;
+       __be16 arpro, arpro_mask;
 
        /* The protocol address length is only accepted if it is 4
         * so there is no use in offering a way to do filtering on it.
@@ -65,35 +65,8 @@ struct arpt_arp {
        u_int16_t invflags;
 };
 
-struct arpt_entry_target
-{
-       union {
-               struct {
-                       u_int16_t target_size;
-
-                       /* Used by userspace */
-                       char name[ARPT_FUNCTION_MAXNAMELEN-1];
-                       u_int8_t revision;
-               } user;
-               struct {
-                       u_int16_t target_size;
-
-                       /* Used inside the kernel */
-                       struct arpt_target *target;
-               } kernel;
-
-               /* Total length */
-               u_int16_t target_size;
-       } u;
-
-       unsigned char data[0];
-};
-
-struct arpt_standard_target
-{
-       struct arpt_entry_target target;
-       int verdict;
-};
+#define arpt_entry_target xt_entry_target
+#define arpt_standard_target xt_standard_target
 
 /* Values for "flag" field in struct arpt_ip (general arp structure).
  * No flags defined yet.
@@ -263,8 +236,10 @@ static __inline__ struct arpt_entry_target *arpt_get_target(struct arpt_entry *e
  */
 #ifdef __KERNEL__
 
-#define arpt_register_target(tgt) xt_register_target(NF_ARP, tgt)
-#define arpt_unregister_target(tgt) xt_unregister_target(NF_ARP, tgt)
+#define arpt_register_target(tgt)      \
+({     (tgt)->family = NF_ARP;         \
+       xt_register_target(tgt); })
+#define arpt_unregister_target(tgt) xt_unregister_target(tgt)
 
 extern int arpt_register_table(struct arpt_table *table,
                               const struct arpt_replace *repl);
@@ -273,8 +248,7 @@ extern unsigned int arpt_do_table(struct sk_buff **pskb,
                                  unsigned int hook,
                                  const struct net_device *in,
                                  const struct net_device *out,
-                                 struct arpt_table *table,
-                                 void *userdata);
+                                 struct arpt_table *table);
 
 #define ARPT_ALIGN(s) (((s) + (__alignof__(struct arpt_entry)-1)) & ~(__alignof__(struct arpt_entry)-1))
 #endif /*__KERNEL__*/