diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-06-07 19:53:46 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-06-07 19:53:46 +0200 |
commit | 04cbb9c53929173ff0ae261c0bb22b5928ffc23b (patch) | |
tree | 97e54ffcc58d376dbe559082e57633983658b6cd /expect.c | |
parent | c9b5bc2b976abeaa13a1c1fc46dd5491feb5b9e7 (diff) |
expect: add new cthelper_* functions for SIP helper
This patch adds new functions to support the SIP helper in
user-space.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'expect.c')
-rw-r--r-- | expect.c | 64 |
1 files changed, 64 insertions, 0 deletions
@@ -171,6 +171,11 @@ int cthelper_del_expect(struct nf_expect *exp) return 0; } +int cthelper_upd_expect(struct nf_expect *exp) +{ + return 0; +} + int cthelper_upd_ct(struct nf_conntrack *ct) { return 0; @@ -203,3 +208,62 @@ cthelper_get_addr_dst(struct nf_conntrack *ct, int dir, break; } } + +int cthelper_cmp_addr_src(struct nf_conntrack *ct, int dir, + union nfct_attr_grp_addr *addr) +{ + union nfct_attr_grp_addr tmp; + + switch (dir) { + case MYCT_DIR_ORIG: + nfct_get_attr_grp(ct, ATTR_GRP_ORIG_ADDR_SRC, &tmp); + break; + case MYCT_DIR_REPL: + nfct_get_attr_grp(ct, ATTR_GRP_REPL_ADDR_SRC, &tmp); + break; + } + return memcmp(addr, &tmp, sizeof(union nfct_attr_grp_addr)) == 0; +} + +int cthelper_cmp_addr_dst(struct nf_conntrack *ct, int dir, + union nfct_attr_grp_addr *addr) +{ + union nfct_attr_grp_addr tmp; + + switch (dir) { + case MYCT_DIR_ORIG: + nfct_get_attr_grp(ct, ATTR_GRP_ORIG_ADDR_DST, &tmp); + break; + case MYCT_DIR_REPL: + nfct_get_attr_grp(ct, ATTR_GRP_REPL_ADDR_DST, &tmp); + break; + } + return memcmp(addr, &tmp, sizeof(union nfct_attr_grp_addr)) == 0; +} + +int cthelper_cmp_exp_addr_dst(struct nf_expect *exp, + union nfct_attr_grp_addr *addr) +{ + const struct nf_conntrack *tuple = nfexp_get_attr(exp, ATTR_EXP_EXPECTED); + union nfct_attr_grp_addr tmp; + + cthelper_get_addr_dst((struct nf_conntrack *)tuple, MYCT_DIR_ORIG, &tmp); + + return memcmp(addr, &tmp, sizeof(union nfct_attr_grp_addr)) == 0; +} + +int cthelper_iterate_exp(struct nf_conntrack *ct, + int (*cb)(struct nf_expect *exp, void *data), + void *data_cb) +{ + return 0; +} + +struct nf_expect *cthelper_find_expect(union nfct_attr_grp_addr *saddr, + union nfct_attr_grp_addr *daddr, + uint16_t sport, uint16_t dport, + uint8_t l3num, uint8_t l4num, + uint16_t zone) +{ + return NULL; +} |