};
static void asn1_open(struct asn1_ctx *ctx,
- unsigned char *buf,
- unsigned int len)
+ unsigned char *buf,
+ unsigned int len)
{
ctx->begin = buf;
ctx->end = buf + len;
}
static unsigned char asn1_id_decode(struct asn1_ctx *ctx,
- unsigned int *cls,
- unsigned int *con,
- unsigned int *tag)
+ unsigned int *cls,
+ unsigned int *con,
+ unsigned int *tag)
{
unsigned char ch;
}
static unsigned char asn1_length_decode(struct asn1_ctx *ctx,
- unsigned int *def,
- unsigned int *len)
+ unsigned int *def,
+ unsigned int *len)
{
unsigned char ch, cnt;
}
static unsigned char asn1_header_decode(struct asn1_ctx *ctx,
- unsigned char **eoc,
- unsigned int *cls,
- unsigned int *con,
- unsigned int *tag)
+ unsigned char **eoc,
+ unsigned int *cls,
+ unsigned int *con,
+ unsigned int *tag)
{
unsigned int def, len;
}
static unsigned char asn1_long_decode(struct asn1_ctx *ctx,
- unsigned char *eoc,
- long *integer)
+ unsigned char *eoc,
+ long *integer)
{
unsigned char ch;
unsigned int len;
}
static unsigned char asn1_uint_decode(struct asn1_ctx *ctx,
- unsigned char *eoc,
- unsigned int *integer)
+ unsigned char *eoc,
+ unsigned int *integer)
{
unsigned char ch;
unsigned int len;
}
static unsigned char asn1_ulong_decode(struct asn1_ctx *ctx,
- unsigned char *eoc,
- unsigned long *integer)
+ unsigned char *eoc,
+ unsigned long *integer)
{
unsigned char ch;
unsigned int len;
}
static unsigned char asn1_octets_decode(struct asn1_ctx *ctx,
- unsigned char *eoc,
- unsigned char **octets,
- unsigned int *len)
+ unsigned char *eoc,
+ unsigned char **octets,
+ unsigned int *len)
{
unsigned char *ptr;
}
static unsigned char asn1_subid_decode(struct asn1_ctx *ctx,
- unsigned long *subid)
+ unsigned long *subid)
{
unsigned char ch;
}
static unsigned char asn1_oid_decode(struct asn1_ctx *ctx,
- unsigned char *eoc,
- unsigned long **oid,
- unsigned int *len)
+ unsigned char *eoc,
+ unsigned long **oid,
+ unsigned int *len)
{
unsigned long subid;
unsigned int size;
#define SERR_EOM 2
static inline void mangle_address(unsigned char *begin,
- unsigned char *addr,
- const struct oct1_map *map,
- __sum16 *check);
+ unsigned char *addr,
+ const struct oct1_map *map,
+ __sum16 *check);
struct snmp_cnv
{
unsigned int class;
};
static unsigned char snmp_tag_cls2syntax(unsigned int tag,
- unsigned int cls,
- unsigned short *syntax)
+ unsigned int cls,
+ unsigned short *syntax)
{
struct snmp_cnv *cnv;
}
static unsigned char snmp_object_decode(struct asn1_ctx *ctx,
- struct snmp_object **obj)
+ struct snmp_object **obj)
{
unsigned int cls, con, tag, len, idlen;
unsigned short type;
return 0;
}
*obj = kmalloc(sizeof(struct snmp_object) + len,
- GFP_ATOMIC);
+ GFP_ATOMIC);
if (*obj == NULL) {
kfree(id);
if (net_ratelimit())
return 0;
}
*obj = kmalloc(sizeof(struct snmp_object) + len,
- GFP_ATOMIC);
+ GFP_ATOMIC);
if (*obj == NULL) {
kfree(id);
if (net_ratelimit())
}
static unsigned char snmp_request_decode(struct asn1_ctx *ctx,
- struct snmp_request *request)
+ struct snmp_request *request)
{
unsigned int cls, con, tag;
unsigned char *end;
* code example in the draft.
*/
static void fast_csum(__sum16 *csum,
- const unsigned char *optr,
- const unsigned char *nptr,
- int offset)
+ const unsigned char *optr,
+ const unsigned char *nptr,
+ int offset)
{
unsigned char s[4];
* - addr points to the start of the address
*/
static inline void mangle_address(unsigned char *begin,
- unsigned char *addr,
- const struct oct1_map *map,
- __sum16 *check)
+ unsigned char *addr,
+ const struct oct1_map *map,
+ __sum16 *check)
{
if (map->from == NOCT1(addr)) {
u_int32_t old;
/* Update UDP checksum if being used */
if (*check) {
fast_csum(check,
- &map->from, &map->to, addr - begin);
+ &map->from, &map->to, addr - begin);
}
}
static unsigned char snmp_trap_decode(struct asn1_ctx *ctx,
- struct snmp_v1_trap *trap,
- const struct oct1_map *map,
- __sum16 *check)
+ struct snmp_v1_trap *trap,
+ const struct oct1_map *map,
+ __sum16 *check)
{
unsigned int cls, con, tag, len;
unsigned char *end;
* (And this is the fucking 'basic' method).
*/
static int snmp_parse_mangle(unsigned char *msg,
- u_int16_t len,
- const struct oct1_map *map,
- __sum16 *check)
+ u_int16_t len,
+ const struct oct1_map *map,
+ __sum16 *check)
{
unsigned char *eoc, *end;
unsigned int cls, con, tag, vers, pdutype;
* SNMP translation routine.
*/
static int snmp_translate(struct nf_conn *ct,
- enum ip_conntrack_info ctinfo,
- struct sk_buff **pskb)
+ enum ip_conntrack_info ctinfo,
+ struct sk_buff **pskb)
{
- struct iphdr *iph = (*pskb)->nh.iph;
+ struct iphdr *iph = ip_hdr(*pskb);
struct udphdr *udph = (struct udphdr *)((__be32 *)iph + iph->ihl);
u_int16_t udplen = ntohs(udph->len);
u_int16_t paylen = udplen - sizeof(struct udphdr);
return NF_ACCEPT;
if (!snmp_parse_mangle((unsigned char *)udph + sizeof(struct udphdr),
- paylen, &map, &udph->check)) {
+ paylen, &map, &udph->check)) {
if (net_ratelimit())
printk(KERN_WARNING "bsalg: parser failed\n");
return NF_DROP;
{
int dir = CTINFO2DIR(ctinfo);
unsigned int ret;
- struct iphdr *iph = (*pskb)->nh.iph;
+ struct iphdr *iph = ip_hdr(*pskb);
struct udphdr *udph = (struct udphdr *)((u_int32_t *)iph + iph->ihl);
/* SNMP replies and originating SNMP traps get mangled */