Lines Matching refs:po

184 static int __set_item(struct pppoe_net *pn, struct pppox_sock *po)  in __set_item()  argument
186 int hash = hash_item(po->pppoe_pa.sid, po->pppoe_pa.remote); in __set_item()
191 if (cmp_2_addr(&ret->pppoe_pa, &po->pppoe_pa) && in __set_item()
192 ret->pppoe_ifindex == po->pppoe_ifindex) in __set_item()
198 po->next = pn->hash_table[hash]; in __set_item()
199 pn->hash_table[hash] = po; in __set_item()
233 struct pppox_sock *po; in get_item() local
236 po = __get_item(pn, sid, addr, ifindex); in get_item()
237 if (po) in get_item()
238 sock_hold(sk_pppox(po)); in get_item()
241 return po; in get_item()
288 struct pppox_sock *po = pn->hash_table[i]; in pppoe_flush_dev() local
291 while (po) { in pppoe_flush_dev()
292 while (po && po->pppoe_dev != dev) { in pppoe_flush_dev()
293 po = po->next; in pppoe_flush_dev()
296 if (!po) in pppoe_flush_dev()
299 sk = sk_pppox(po); in pppoe_flush_dev()
313 if (po->pppoe_dev == dev && in pppoe_flush_dev()
317 po->pppoe_dev = NULL; in pppoe_flush_dev()
331 po = pn->hash_table[i]; in pppoe_flush_dev()
374 struct pppox_sock *po = pppox_sk(sk); in pppoe_rcv_core() local
386 ppp_input(&po->chan, skb); in pppoe_rcv_core()
389 &po->pppoe_relay); in pppoe_rcv_core()
424 struct pppox_sock *po; in pppoe_rcv() local
450 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex); in pppoe_rcv()
451 if (!po) in pppoe_rcv()
454 return sk_receive_skb(sk_pppox(po), skb, 0); in pppoe_rcv()
464 struct pppox_sock *po = container_of(work, struct pppox_sock, in pppoe_unbind_sock_work() local
466 struct sock *sk = sk_pppox(po); in pppoe_unbind_sock_work()
469 if (po->pppoe_dev) { in pppoe_unbind_sock_work()
470 dev_put(po->pppoe_dev); in pppoe_unbind_sock_work()
471 po->pppoe_dev = NULL; in pppoe_unbind_sock_work()
489 struct pppox_sock *po; in pppoe_disc_rcv() local
504 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex); in pppoe_disc_rcv()
505 if (po) { in pppoe_disc_rcv()
506 struct sock *sk = sk_pppox(po); in pppoe_disc_rcv()
523 if (!schedule_work(&po->proto.pppoe.padt_work)) in pppoe_disc_rcv()
582 struct pppox_sock *po; in pppoe_release() local
595 po = pppox_sk(sk); in pppoe_release()
597 if (po->pppoe_dev) { in pppoe_release()
598 dev_put(po->pppoe_dev); in pppoe_release()
599 po->pppoe_dev = NULL; in pppoe_release()
614 delete_item(pn, po->pppoe_pa.sid, po->pppoe_pa.remote, in pppoe_release()
615 po->pppoe_ifindex); in pppoe_release()
632 struct pppox_sock *po = pppox_sk(sk); in pppoe_connect() local
659 if (stage_session(po->pppoe_pa.sid)) { in pppoe_connect()
662 delete_item(pn, po->pppoe_pa.sid, in pppoe_connect()
663 po->pppoe_pa.remote, po->pppoe_ifindex); in pppoe_connect()
664 if (po->pppoe_dev) { in pppoe_connect()
665 dev_put(po->pppoe_dev); in pppoe_connect()
666 po->pppoe_dev = NULL; in pppoe_connect()
669 po->pppoe_ifindex = 0; in pppoe_connect()
670 memset(&po->pppoe_pa, 0, sizeof(po->pppoe_pa)); in pppoe_connect()
671 memset(&po->pppoe_relay, 0, sizeof(po->pppoe_relay)); in pppoe_connect()
672 memset(&po->chan, 0, sizeof(po->chan)); in pppoe_connect()
673 po->next = NULL; in pppoe_connect()
674 po->num = 0; in pppoe_connect()
687 po->pppoe_dev = dev; in pppoe_connect()
688 po->pppoe_ifindex = dev->ifindex; in pppoe_connect()
694 memcpy(&po->pppoe_pa, in pppoe_connect()
699 error = __set_item(pn, po); in pppoe_connect()
704 po->chan.hdrlen = (sizeof(struct pppoe_hdr) + in pppoe_connect()
707 po->chan.mtu = dev->mtu - sizeof(struct pppoe_hdr) - 2; in pppoe_connect()
708 po->chan.private = sk; in pppoe_connect()
709 po->chan.ops = &pppoe_chan_ops; in pppoe_connect()
711 error = ppp_register_net_channel(dev_net(dev), &po->chan); in pppoe_connect()
713 delete_item(pn, po->pppoe_pa.sid, in pppoe_connect()
714 po->pppoe_pa.remote, po->pppoe_ifindex); in pppoe_connect()
721 po->num = sp->sa_addr.pppoe.sid; in pppoe_connect()
727 if (po->pppoe_dev) { in pppoe_connect()
728 dev_put(po->pppoe_dev); in pppoe_connect()
729 po->pppoe_dev = NULL; in pppoe_connect()
756 struct pppox_sock *po = pppox_sk(sk); in pppoe_ioctl() local
767 if (put_user(po->pppoe_dev->mtu - in pppoe_ioctl()
784 if (val < (po->pppoe_dev->mtu in pppoe_ioctl()
814 if (copy_from_user(&po->pppoe_relay, in pppoe_ioctl()
820 if (po->pppoe_relay.sa_family != AF_PPPOX || in pppoe_ioctl()
821 po->pppoe_relay.sa_protocol != PX_PROTO_OE) in pppoe_ioctl()
826 relay_po = get_item_by_addr(sock_net(sk), &po->pppoe_relay); in pppoe_ioctl()
857 struct pppox_sock *po = pppox_sk(sk); in pppoe_sendmsg() local
873 hdr.sid = po->num; in pppoe_sendmsg()
875 dev = po->pppoe_dev; in pppoe_sendmsg()
909 po->pppoe_pa.remote, NULL, total_len); in pppoe_sendmsg()
929 struct pppox_sock *po = pppox_sk(sk); in __pppoe_xmit() local
930 struct net_device *dev = po->pppoe_dev; in __pppoe_xmit()
961 ph->sid = po->num; in __pppoe_xmit()
968 po->pppoe_pa.remote, NULL, data_len); in __pppoe_xmit()
1028 struct pppox_sock *po; in pppoe_seq_show() local
1036 po = v; in pppoe_seq_show()
1037 dev_name = po->pppoe_pa.dev; in pppoe_seq_show()
1040 po->pppoe_pa.sid, po->pppoe_pa.remote, dev_name); in pppoe_seq_show()
1047 struct pppox_sock *po; in pppoe_get_idx() local
1051 po = pn->hash_table[i]; in pppoe_get_idx()
1052 while (po) { in pppoe_get_idx()
1055 po = po->next; in pppoe_get_idx()
1060 return po; in pppoe_get_idx()
1076 struct pppox_sock *po; in pppoe_seq_next() local
1080 po = pppoe_get_idx(pn, 0); in pppoe_seq_next()
1083 po = v; in pppoe_seq_next()
1084 if (po->next) in pppoe_seq_next()
1085 po = po->next; in pppoe_seq_next()
1087 int hash = hash_item(po->pppoe_pa.sid, po->pppoe_pa.remote); in pppoe_seq_next()
1089 po = NULL; in pppoe_seq_next()
1091 po = pn->hash_table[hash]; in pppoe_seq_next()
1092 if (po) in pppoe_seq_next()
1098 return po; in pppoe_seq_next()