version 1.1.1.2, 2014/06/15 16:31:38
|
version 1.1.1.5, 2023/09/27 11:02:07
|
Line 1
|
Line 1
|
/* dnsmasq is Copyright (c) 2000-2014 Simon Kelley | /* dnsmasq is Copyright (c) 2000-2022 Simon Kelley |
|
|
This program is free software; you can redistribute it and/or modify |
This program is free software; you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
it under the terms of the GNU General Public License as published by |
Line 24 static int gotit = 0; /* yuck */
|
Line 24 static int gotit = 0; /* yuck */
|
|
|
static int callback(enum nf_conntrack_msg_type type, struct nf_conntrack *ct, void *data); |
static int callback(enum nf_conntrack_msg_type type, struct nf_conntrack *ct, void *data); |
|
|
int get_incoming_mark(union mysockaddr *peer_addr, struct all_addr *local_addr, int istcp, unsigned int *markp) | int get_incoming_mark(union mysockaddr *peer_addr, union all_addr *local_addr, int istcp, unsigned int *markp) |
{ |
{ |
struct nf_conntrack *ct; |
struct nf_conntrack *ct; |
struct nfct_handle *h; |
struct nfct_handle *h; |
Line 36 int get_incoming_mark(union mysockaddr *peer_addr, str
|
Line 36 int get_incoming_mark(union mysockaddr *peer_addr, str
|
nfct_set_attr_u8(ct, ATTR_L4PROTO, istcp ? IPPROTO_TCP : IPPROTO_UDP); |
nfct_set_attr_u8(ct, ATTR_L4PROTO, istcp ? IPPROTO_TCP : IPPROTO_UDP); |
nfct_set_attr_u16(ct, ATTR_PORT_DST, htons(daemon->port)); |
nfct_set_attr_u16(ct, ATTR_PORT_DST, htons(daemon->port)); |
|
|
#ifdef HAVE_IPV6 |
|
if (peer_addr->sa.sa_family == AF_INET6) |
if (peer_addr->sa.sa_family == AF_INET6) |
{ |
{ |
nfct_set_attr_u8(ct, ATTR_L3PROTO, AF_INET6); |
nfct_set_attr_u8(ct, ATTR_L3PROTO, AF_INET6); |
nfct_set_attr(ct, ATTR_IPV6_SRC, peer_addr->in6.sin6_addr.s6_addr); |
nfct_set_attr(ct, ATTR_IPV6_SRC, peer_addr->in6.sin6_addr.s6_addr); |
nfct_set_attr_u16(ct, ATTR_PORT_SRC, peer_addr->in6.sin6_port); |
nfct_set_attr_u16(ct, ATTR_PORT_SRC, peer_addr->in6.sin6_port); |
nfct_set_attr(ct, ATTR_IPV6_DST, local_addr->addr.addr6.s6_addr); | nfct_set_attr(ct, ATTR_IPV6_DST, local_addr->addr6.s6_addr); |
} |
} |
else |
else |
#endif |
|
{ |
{ |
nfct_set_attr_u8(ct, ATTR_L3PROTO, AF_INET); |
nfct_set_attr_u8(ct, ATTR_L3PROTO, AF_INET); |
nfct_set_attr_u32(ct, ATTR_IPV4_SRC, peer_addr->in.sin_addr.s_addr); |
nfct_set_attr_u32(ct, ATTR_IPV4_SRC, peer_addr->in.sin_addr.s_addr); |
nfct_set_attr_u16(ct, ATTR_PORT_SRC, peer_addr->in.sin_port); |
nfct_set_attr_u16(ct, ATTR_PORT_SRC, peer_addr->in.sin_port); |
nfct_set_attr_u32(ct, ATTR_IPV4_DST, local_addr->addr.addr4.s_addr); | nfct_set_attr_u32(ct, ATTR_IPV4_DST, local_addr->addr4.s_addr); |
} |
} |
|
|
|
|
Line 84 static int callback(enum nf_conntrack_msg_type type, s
|
Line 82 static int callback(enum nf_conntrack_msg_type type, s
|
return NFCT_CB_CONTINUE; |
return NFCT_CB_CONTINUE; |
} |
} |
|
|
#endif | #endif /* HAVE_CONNTRACK */ |
| |
| |
| |