diff options
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; +} |