X-Git-Url: http://git.onelab.eu/?p=ipfw.git;a=blobdiff_plain;f=dummynet%2Fmissing.h;h=1d2f2ecebca3b2ab7f1e2c9e969a90ccb4391bc7;hp=c6bb4f3bb71e7d04393744defcad1bd47177bf81;hb=5ad9fec40da13c449d50def12f9cea6e24b6a708;hpb=f1a44f1ebacf274e0f35970bfc8ee5aa07aa9aca diff --git a/dummynet/missing.h b/dummynet/missing.h index c6bb4f3..1d2f2ec 100644 --- a/dummynet/missing.h +++ b/dummynet/missing.h @@ -56,9 +56,10 @@ struct inpcb; /* * Kernel locking support. - * FreeBSD uses mtx in dummynet.c, and rwlocks in ipfw.c + * FreeBSD uses mtx in dummynet.c and struct rwlock ip_fw2.c * * In linux we use spinlock_bh to implement both. + * For 'struct rwlock' we need an #ifdef to change it to spinlock_t */ #ifndef DEFINE_SPINLOCK /* this is for linux 2.4 */ @@ -83,6 +84,13 @@ struct inpcb; /* end of locking support */ +/* in netinet/in.h */ +#define in_nullhost(x) ((x).s_addr == INADDR_ANY) + +/* bzero not present on linux, but this should go in glue.h */ +#define bzero(s, n) memset(s, 0, n) +#define bcmp(p1, p2, n) memcmp(p1, p2, n) + /* ethernet stuff */ #define ETHERTYPE_IP 0x0800 /* IP protocol */ #define ETHER_ADDR_LEN 6 /* length of an Ethernet address */ @@ -264,12 +272,13 @@ struct pf_mtag { u_int32_t qid; /* queue id */ }; -/* radix related */ - +#if 0 // ndef radix +/* radix stuff in radix.h and radix.c */ struct radix_node { caddr_t rn_key; /* object of search */ caddr_t rn_mask; /* netmask, if present */ }; +#endif /* !radix */ /* missing kernel functions */ char *inet_ntoa(struct in_addr ina); @@ -428,6 +437,11 @@ linux_lookup(const int proto, const __be32 saddr, const __be16 sport, struct sk_buff *skb, int dir, struct ip_fw_ugid *ugp); /* vnet wrappers, in vnet.h and ip_var.h */ +int ipfw_init(void); +void ipfw_destroy(void); +struct ip_fw_args; +extern int (*ip_dn_io_ptr)(struct mbuf **m, int dir, struct ip_fw_args *fwa); + #define curvnet NULL #define CURVNET_SET(_v) #define CURVNET_RESTORE() @@ -446,13 +460,17 @@ linux_lookup(const int proto, const __be32 saddr, const __be16 sport, #define VNET_PTR(n) (&(n)) #define VNET(n) (n) -VNET_DECLARE(struct ip_fw_chain, layer3_chain); +extern int (*ip_dn_ctl_ptr)(struct sockopt *); +typedef int ip_fw_ctl_t(struct sockopt *); +extern ip_fw_ctl_t *ip_fw_ctl_ptr; + +/* For kernel ipfw_ether and ipfw_bridge. */ +struct ip_fw_args; +typedef int ip_fw_chk_t(struct ip_fw_args *args); +extern ip_fw_chk_t *ip_fw_chk_ptr; -#define V_fw_enable VNET(fw_enable) -#define V_fw_one_pass VNET(fw_one_pass) #define V_ip_fw_chk_ptr VNET(ip_fw_chk_ptr) #define V_ip_fw_ctl_ptr VNET(ip_fw_ctl_ptr) -#define V_layer3_chain VNET(layer3_chain) #define V_tcbinfo VNET(tcbinfo) #define V_udbinfo VNET(udbinfo)