/* timeout GRE data connections */ static void pptp_destroy_siblings(struct ip_conntrack *ct) { struct ip_conntrack_tuple t; /* Since ct->sibling_list has literally rusted away in 2.6.11, * we now need another way to find out about our sibling * contrack and expects... -HW */ /* try original (pns->pac) tuple */ memcpy(&t, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple, sizeof(t)); t.dst.protonum = IPPROTO_GRE; t.src.u.gre.key = htons(ct->help.ct_pptp_info.pns_call_id); t.dst.u.gre.key = htons(ct->help.ct_pptp_info.pac_call_id); if (!destroy_sibling_or_exp(&t)) DEBUGP("failed to timeout original pns->pac ct/exp\n"); /* try reply (pac->pns) tuple */ memcpy(&t, &ct->tuplehash[IP_CT_DIR_REPLY].tuple, sizeof(t)); t.dst.protonum = IPPROTO_GRE; t.src.u.gre.key = htons(ct->help.ct_pptp_info.pac_call_id); t.dst.u.gre.key = htons(ct->help.ct_pptp_info.pns_call_id); if (!destroy_sibling_or_exp(&t)) DEBUGP("failed to timeout reply pac->pns ct/exp\n"); }
/* timeout GRE data connections */ static void pptp_destroy_siblings(struct nf_conn *ct) { struct net *net = nf_ct_net(ct); const struct nf_conn_help *help = nfct_help(ct); struct nf_conntrack_tuple t; #ifdef CONFIG_HTC_NET_MODIFY if (help == NULL) printk("[NET] help = NULL in %s\n", __func__); #endif nf_ct_gre_keymap_destroy(ct); /* try original (pns->pac) tuple */ memcpy(&t, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple, sizeof(t)); t.dst.protonum = IPPROTO_GRE; t.src.u.gre.key = help->help.ct_pptp_info.pns_call_id; t.dst.u.gre.key = help->help.ct_pptp_info.pac_call_id; if (!destroy_sibling_or_exp(net, ct, &t)) pr_debug("failed to timeout original pns->pac ct/exp\n"); /* try reply (pac->pns) tuple */ memcpy(&t, &ct->tuplehash[IP_CT_DIR_REPLY].tuple, sizeof(t)); t.dst.protonum = IPPROTO_GRE; t.src.u.gre.key = help->help.ct_pptp_info.pac_call_id; t.dst.u.gre.key = help->help.ct_pptp_info.pns_call_id; if (!destroy_sibling_or_exp(net, ct, &t)) pr_debug("failed to timeout reply pac->pns ct/exp\n"); }
/* timeout GRE data connections */ static void pptp_destroy_siblings(struct nf_conn *ct) { struct nf_conn_help *help = nfct_help(ct); struct nf_conntrack_tuple t; nf_ct_gre_keymap_destroy(ct); /* try original (pns->pac) tuple */ memcpy(&t, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple, sizeof(t)); t.dst.protonum = IPPROTO_GRE; t.src.u.gre.key = help->help.ct_pptp_info.pns_call_id; t.dst.u.gre.key = help->help.ct_pptp_info.pac_call_id; if (!destroy_sibling_or_exp(&t)) pr_debug("failed to timeout original pns->pac ct/exp\n"); /* try reply (pac->pns) tuple */ memcpy(&t, &ct->tuplehash[IP_CT_DIR_REPLY].tuple, sizeof(t)); t.dst.protonum = IPPROTO_GRE; t.src.u.gre.key = help->help.ct_pptp_info.pac_call_id; t.dst.u.gre.key = help->help.ct_pptp_info.pns_call_id; if (!destroy_sibling_or_exp(&t)) pr_debug("failed to timeout reply pac->pns ct/exp\n"); }
/* timeout GRE data connections */ static void pptp_destroy_siblings(struct net_session *ns) { struct vrf *vrf = ns->vrf; const struct net_session_help *help = ns_help(ns); struct netsession_tuple t; ns_gre_keymap_destroy(ns); /* try original (pns->pac) tuple */ memcpy(&t, &ns->tuple[NS_DIR_ORIGINAL], sizeof(t)); t.dst.protonum = IPPROTO_GRE; t.src.u.gre.key = help->help.ns_pptp_info.pns_call_id; t.dst.u.gre.key = help->help.ns_pptp_info.pac_call_id; if (!destroy_sibling_or_exp(vrf, &t)) NS_PPTP_DEBUG("failed to timeout original pns->pac ct/exp\n"); /* try reply (pac->pns) tuple */ memcpy(&t, &ns->tuple[NS_DIR_REPLY], sizeof(t)); t.dst.protonum = IPPROTO_GRE; t.src.u.gre.key = help->help.ns_pptp_info.pac_call_id; t.dst.u.gre.key = help->help.ns_pptp_info.pns_call_id; if (!destroy_sibling_or_exp(vrf, &t)) NS_PPTP_DEBUG("failed to timeout reply pac->pns ct/exp\n"); }