Messages in this thread Patch in this message | | | From | (Alan Cox) | Subject | Re: Part 1 of CONFIG_FILTER (RE: 2.2.2-pre5 compile error) | Date | Sat, 20 Feb 1999 20:36:10 +0000 (GMT) |
| |
> This is a typo fix that is needed :: linux/include/linux/filter.h > > -extern int sk_run_filter(unsigned char *data, > +extern int sk_run_filter(struct sk_buff *skb,
Its not a typo. Part of the patch escaped somewhere. Note also that this diff isnt the same as -ac6. It fixes a binary compat breakage in 2.2.1->ac6
This should cure your problem I think.
--- ../linux.p5/include/linux/filter.h Thu Feb 18 23:52:06 1999 +++ include/linux/filter.h Sat Feb 20 19:38:48 1999 @@ -18,18 +18,32 @@ struct sock_filter /* Filter block */ { - u16 code; /* Actual filter code */ - u8 jt; /* Jump true */ - u8 jf; /* Jump false */ - u32 k; /* Generic multiuse field */ + __u16 code; /* Actual filter code */ + __u8 jt; /* Jump true */ + __u8 jf; /* Jump false */ + __u32 k; /* Generic multiuse field */ }; struct sock_fprog /* Required for SO_ATTACH_FILTER. */ { - unsigned short len; /* Number of filter blocks */ + unsigned short len; /* Number of filter blocks */ struct sock_filter *filter; }; +#ifdef __KERNEL__ +struct sk_filter +{ + atomic_t refcnt; + unsigned int len; /* Number of filter blocks */ + struct sock_filter insns[0]; +}; + +extern __inline__ unsigned int sk_filter_len(struct sk_filter *fp) +{ + return fp->len*sizeof(struct sock_filter) + sizeof(*fp); +} +#endif + /* * Instruction classes */ @@ -86,21 +100,40 @@ #define BPF_TAX 0x00 #define BPF_TXA 0x80 -#define BPF_MAXINSNS 512 +#ifndef BPF_MAXINSNS +#define BPF_MAXINSNS 4096 +#endif /* * Macros for filter block array initializers. */ +#ifndef BPF_STMT #define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k } +#endif +#ifndef BPF_JUMP #define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k } +#endif /* * Number of scratch memory words for: BPF_ST and BPF_STX */ #define BPF_MEMWORDS 16 +/* RATIONALE. Negative offsets are invalid in BPF. + We use them to reference ancillary data. + Unlike introduction new instructions, it does not break + existing compilers/optimizers. + */ +#define SKF_AD_OFF (-0x1000) +#define SKF_AD_PROTOCOL 0 +#define SKF_AD_PKTTYPE 4 +#define SKF_AD_IFINDEX 8 +#define SKF_AD_MAX 12 +#define SKF_NET_OFF (-0x100000) +#define SKF_LL_OFF (-0x200000) + #ifdef __KERNEL__ -extern int sk_run_filter(unsigned char *data, int len, struct sock_filter *filter, int flen); +extern int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen); extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk); #endif /* __KERNEL__ */ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |