• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/net/xfrm/

Lines Matching defs:net

17 #include <net/xfrm.h>
52 static inline unsigned int xfrm_dst_hash(struct net *net,
58 return __xfrm_dst_hash(daddr, saddr, reqid, family, net->xfrm.state_hmask);
61 static inline unsigned int xfrm_src_hash(struct net *net,
66 return __xfrm_src_hash(daddr, saddr, family, net->xfrm.state_hmask);
70 xfrm_spi_hash(struct net *net, xfrm_address_t *daddr, __be32 spi, u8 proto, unsigned short family)
72 return __xfrm_spi_hash(daddr, spi, proto, family, net->xfrm.state_hmask);
115 struct net *net = container_of(work, struct net, xfrm.state_hash_work);
123 nsize = xfrm_hash_new_size(net->xfrm.state_hmask);
142 for (i = net->xfrm.state_hmask; i >= 0; i--)
143 xfrm_hash_transfer(net->xfrm.state_bydst+i, ndst, nsrc, nspi,
146 odst = net->xfrm.state_bydst;
147 osrc = net->xfrm.state_bysrc;
148 ospi = net->xfrm.state_byspi;
149 ohashmask = net->xfrm.state_hmask;
151 net->xfrm.state_bydst = ndst;
152 net->xfrm.state_bysrc = nsrc;
153 net->xfrm.state_byspi = nspi;
154 net->xfrm.state_hmask = nhashmask;
381 struct net *net = container_of(work, struct net, xfrm.state_gc_work);
387 hlist_move_list(&net->xfrm.state_gc_list, &gc_list);
393 wake_up(&net->xfrm.km_waitq);
408 struct net *net = xs_net(x);
467 wake_up(&net->xfrm.km_waitq);
487 struct xfrm_state *xfrm_state_alloc(struct net *net)
494 write_pnet(&x->xs_net, net);
521 struct net *net = xs_net(x);
526 hlist_add_head(&x->gclist, &net->xfrm.state_gc_list);
528 schedule_work(&net->xfrm.state_gc_work);
534 struct net *net = xs_net(x);
545 net->xfrm.state_num--;
574 xfrm_state_flush_secctx_check(struct net *net, u8 proto, struct xfrm_audit *audit_info)
578 for (i = 0; i <= net->xfrm.state_hmask; i++) {
582 hlist_for_each_entry(x, entry, net->xfrm.state_bydst+i, bydst) {
598 xfrm_state_flush_secctx_check(struct net *net, u8 proto, struct xfrm_audit *audit_info)
604 int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info)
609 err = xfrm_state_flush_secctx_check(net, proto, audit_info);
614 for (i = 0; i <= net->xfrm.state_hmask; i++) {
618 hlist_for_each_entry(x, entry, net->xfrm.state_bydst+i, bydst) {
643 wake_up(&net->xfrm.km_waitq);
648 void xfrm_sad_getinfo(struct net *net, struct xfrmk_sadinfo *si)
651 si->sadcnt = net->xfrm.state_num;
652 si->sadhcnt = net->xfrm.state_hmask;
680 static struct xfrm_state *__xfrm_state_lookup(struct net *net, u32 mark, xfrm_address_t *daddr, __be32 spi, u8 proto, unsigned short family)
682 unsigned int h = xfrm_spi_hash(net, daddr, spi, proto, family);
686 hlist_for_each_entry(x, entry, net->xfrm.state_byspi+h, byspi) {
702 static struct xfrm_state *__xfrm_state_lookup_byaddr(struct net *net, u32 mark, xfrm_address_t *daddr, xfrm_address_t *saddr, u8 proto, unsigned short family)
704 unsigned int h = xfrm_src_hash(net, daddr, saddr, family);
708 hlist_for_each_entry(x, entry, net->xfrm.state_bysrc+h, bysrc) {
727 struct net *net = xs_net(x);
731 return __xfrm_state_lookup(net, mark, &x->id.daddr,
734 return __xfrm_state_lookup_byaddr(net, mark,
740 static void xfrm_hash_grow_check(struct net *net, int have_hash_collision)
743 (net->xfrm.state_hmask + 1) < xfrm_state_hashmax &&
744 net->xfrm.state_num > net->xfrm.state_hmask)
745 schedule_work(&net->xfrm.state_hash_work);
793 struct net *net = xp_net(pol);
806 h = xfrm_dst_hash(net, daddr, saddr, tmpl->reqid, encap_family);
807 hlist_for_each_entry(x, entry, net->xfrm.state_bydst+h, bydst) {
822 h_wildcard = xfrm_dst_hash(net, daddr, &saddr_wildcard, tmpl->reqid, encap_family);
823 hlist_for_each_entry(x, entry, net->xfrm.state_bydst+h_wildcard, bydst) {
840 (x0 = __xfrm_state_lookup(net, mark, daddr, tmpl->id.spi,
846 x = xfrm_state_alloc(net);
866 list_add(&x->km.all, &net->xfrm.state_all);
867 hlist_add_head(&x->bydst, net->xfrm.state_bydst+h);
868 h = xfrm_src_hash(net, daddr, saddr, encap_family);
869 hlist_add_head(&x->bysrc, net->xfrm.state_bysrc+h);
871 h = xfrm_spi_hash(net, &x->id.daddr, x->id.spi, x->id.proto, encap_family);
872 hlist_add_head(&x->byspi, net->xfrm.state_byspi+h);
874 x->lft.hard_add_expires_seconds = net->xfrm.sysctl_acq_expires;
875 tasklet_hrtimer_start(&x->mtimer, ktime_set(net->xfrm.sysctl_acq_expires, 0), HRTIMER_MODE_REL);
876 net->xfrm.state_num++;
877 xfrm_hash_grow_check(net, x->bydst.next != NULL);
897 xfrm_stateonly_find(struct net *net, u32 mark,
906 h = xfrm_dst_hash(net, daddr, saddr, reqid, family);
907 hlist_for_each_entry(x, entry, net->xfrm.state_bydst+h, bydst) {
932 struct net *net = xs_net(x);
935 list_add(&x->km.all, &net->xfrm.state_all);
937 h = xfrm_dst_hash(net, &x->id.daddr, &x->props.saddr,
939 hlist_add_head(&x->bydst, net->xfrm.state_bydst+h);
941 h = xfrm_src_hash(net, &x->id.daddr, &x->props.saddr, x->props.family);
942 hlist_add_head(&x->bysrc, net->xfrm.state_bysrc+h);
945 h = xfrm_spi_hash(net, &x->id.daddr, x->id.spi, x->id.proto,
948 hlist_add_head(&x->byspi, net->xfrm.state_byspi+h);
955 wake_up(&net->xfrm.km_waitq);
957 net->xfrm.state_num++;
959 xfrm_hash_grow_check(net, x->bydst.next != NULL);
965 struct net *net = xs_net(xnew);
973 h = xfrm_dst_hash(net, &xnew->id.daddr, &xnew->props.saddr, reqid, family);
974 hlist_for_each_entry(x, entry, net->xfrm.state_bydst+h, bydst) {
994 static struct xfrm_state *__find_acq_core(struct net *net, struct xfrm_mark *m, unsigned short family, u8 mode, u32 reqid, u8 proto, xfrm_address_t *daddr, xfrm_address_t *saddr, int create)
996 unsigned int h = xfrm_dst_hash(net, daddr, saddr, reqid, family);
1001 hlist_for_each_entry(x, entry, net->xfrm.state_bydst+h, bydst) {
1020 x = xfrm_state_alloc(net);
1053 x->lft.hard_add_expires_seconds = net->xfrm.sysctl_acq_expires;
1055 tasklet_hrtimer_start(&x->mtimer, ktime_set(net->xfrm.sysctl_acq_expires, 0), HRTIMER_MODE_REL);
1056 list_add(&x->km.all, &net->xfrm.state_all);
1057 hlist_add_head(&x->bydst, net->xfrm.state_bydst+h);
1058 h = xfrm_src_hash(net, daddr, saddr, family);
1059 hlist_add_head(&x->bysrc, net->xfrm.state_bysrc+h);
1061 net->xfrm.state_num++;
1063 xfrm_hash_grow_check(net, x->bydst.next != NULL);
1069 static struct xfrm_state *__xfrm_find_acq_byseq(struct net *net, u32 mark, u32 seq);
1073 struct net *net = xs_net(x);
1095 x1 = __xfrm_find_acq_byseq(net, mark, x->km.seq);
1104 x1 = __find_acq_core(net, &x->mark, family, x->props.mode,
1130 struct net *net = xs_net(orig);
1132 struct xfrm_state *x = xfrm_state_alloc(net);
1372 xfrm_state_lookup(struct net *net, u32 mark, xfrm_address_t *daddr, __be32 spi,
1378 x = __xfrm_state_lookup(net, mark, daddr, spi, proto, family);
1385 xfrm_state_lookup_byaddr(struct net *net, u32 mark,
1392 x = __xfrm_state_lookup_byaddr(net, mark, daddr, saddr, proto, family);
1399 xfrm_find_acq(struct net *net, struct xfrm_mark *mark, u8 mode, u32 reqid, u8 proto,
1406 x = __find_acq_core(net, mark, family, mode, reqid, proto, daddr, saddr, create);
1453 static struct xfrm_state *__xfrm_find_acq_byseq(struct net *net, u32 mark, u32 seq)
1457 for (i = 0; i <= net->xfrm.state_hmask; i++) {
1461 hlist_for_each_entry(x, entry, net->xfrm.state_bydst+i, bydst) {
1473 struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 mark, u32 seq)
1478 x = __xfrm_find_acq_byseq(net, mark, seq);
1499 struct net *net = xs_net(x);
1518 x0 = xfrm_state_lookup(net, mark, &x->id.daddr, minspi, x->id.proto, x->props.family);
1528 x0 = xfrm_state_lookup(net, mark, &x->id.daddr, htonl(spi), x->id.proto, x->props.family);
1538 h = xfrm_spi_hash(net, &x->id.daddr, x->id.spi, x->id.proto, x->props.family);
1539 hlist_add_head(&x->byspi, net->xfrm.state_byspi+h);
1552 int xfrm_state_walk(struct net *net, struct xfrm_state_walk *walk,
1565 x = list_first_entry(&net->xfrm.state_all, struct xfrm_state_walk, all);
1568 list_for_each_entry_from(x, &net->xfrm.state_all, all) {
1756 struct net *net = xs_net(x);
1765 wake_up(&net->xfrm.km_waitq);
1808 struct net *net = xp_net(pol);
1817 wake_up(&net->xfrm.km_waitq);
1844 int km_report(struct net *net, u8 proto, struct xfrm_selector *sel, xfrm_address_t *addr)
1853 ret = km->report(net, proto, sel, addr);
1975 /* Temporarily located here until net/xfrm/xfrm_tunnel.c is created */
2085 int __net_init xfrm_state_init(struct net *net)
2089 INIT_LIST_HEAD(&net->xfrm.state_all);
2093 net->xfrm.state_bydst = xfrm_hash_alloc(sz);
2094 if (!net->xfrm.state_bydst)
2096 net->xfrm.state_bysrc = xfrm_hash_alloc(sz);
2097 if (!net->xfrm.state_bysrc)
2099 net->xfrm.state_byspi = xfrm_hash_alloc(sz);
2100 if (!net->xfrm.state_byspi)
2102 net->xfrm.state_hmask = ((sz / sizeof(struct hlist_head)) - 1);
2104 net->xfrm.state_num = 0;
2105 INIT_WORK(&net->xfrm.state_hash_work, xfrm_hash_resize);
2106 INIT_HLIST_HEAD(&net->xfrm.state_gc_list);
2107 INIT_WORK(&net->xfrm.state_gc_work, xfrm_state_gc_task);
2108 init_waitqueue_head(&net->xfrm.km_waitq);
2112 xfrm_hash_free(net->xfrm.state_bysrc, sz);
2114 xfrm_hash_free(net->xfrm.state_bydst, sz);
2119 void xfrm_state_fini(struct net *net)
2124 flush_work(&net->xfrm.state_hash_work);
2128 xfrm_state_flush(net, IPSEC_PROTO_ANY, &audit_info);
2129 flush_work(&net->xfrm.state_gc_work);
2131 WARN_ON(!list_empty(&net->xfrm.state_all));
2133 sz = (net->xfrm.state_hmask + 1) * sizeof(struct hlist_head);
2134 WARN_ON(!hlist_empty(net->xfrm.state_byspi));
2135 xfrm_hash_free(net->xfrm.state_byspi, sz);
2136 WARN_ON(!hlist_empty(net->xfrm.state_bysrc));
2137 xfrm_hash_free(net->xfrm.state_bysrc, sz);
2138 WARN_ON(!hlist_empty(net->xfrm.state_bydst));
2139 xfrm_hash_free(net->xfrm.state_bydst, sz);