Lines Matching refs:po
179 static int __set_item(struct pppoe_net *pn, struct pppox_sock *po) in __set_item() argument
181 int hash = hash_item(po->pppoe_pa.sid, po->pppoe_pa.remote); in __set_item()
186 if (cmp_2_addr(&ret->pppoe_pa, &po->pppoe_pa) && in __set_item()
187 ret->pppoe_ifindex == po->pppoe_ifindex) in __set_item()
193 po->next = pn->hash_table[hash]; in __set_item()
194 pn->hash_table[hash] = po; in __set_item()
228 struct pppox_sock *po; in get_item() local
231 po = __get_item(pn, sid, addr, ifindex); in get_item()
232 if (po) in get_item()
233 sock_hold(sk_pppox(po)); in get_item()
236 return po; in get_item()
283 struct pppox_sock *po = pn->hash_table[i]; in pppoe_flush_dev() local
286 while (po) { in pppoe_flush_dev()
287 while (po && po->pppoe_dev != dev) { in pppoe_flush_dev()
288 po = po->next; in pppoe_flush_dev()
291 if (!po) in pppoe_flush_dev()
294 sk = sk_pppox(po); in pppoe_flush_dev()
308 if (po->pppoe_dev == dev && in pppoe_flush_dev()
312 po->pppoe_dev = NULL; in pppoe_flush_dev()
326 po = pn->hash_table[i]; in pppoe_flush_dev()
369 struct pppox_sock *po = pppox_sk(sk); in pppoe_rcv_core() local
381 ppp_input(&po->chan, skb); in pppoe_rcv_core()
384 &po->pppoe_relay); in pppoe_rcv_core()
419 struct pppox_sock *po; in pppoe_rcv() local
449 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex); in pppoe_rcv()
450 if (!po) in pppoe_rcv()
453 return sk_receive_skb(sk_pppox(po), skb, 0); in pppoe_rcv()
463 struct pppox_sock *po = container_of(work, struct pppox_sock, in pppoe_unbind_sock_work() local
465 struct sock *sk = sk_pppox(po); in pppoe_unbind_sock_work()
468 if (po->pppoe_dev) { in pppoe_unbind_sock_work()
469 dev_put(po->pppoe_dev); in pppoe_unbind_sock_work()
470 po->pppoe_dev = NULL; in pppoe_unbind_sock_work()
488 struct pppox_sock *po; in pppoe_disc_rcv() local
503 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex); in pppoe_disc_rcv()
504 if (po) in pppoe_disc_rcv()
505 if (!schedule_work(&po->proto.pppoe.padt_work)) in pppoe_disc_rcv()
506 sock_put(sk_pppox(po)); in pppoe_disc_rcv()
563 struct pppox_sock *po; in pppoe_release() local
576 po = pppox_sk(sk); in pppoe_release()
578 if (po->pppoe_dev) { in pppoe_release()
579 dev_put(po->pppoe_dev); in pppoe_release()
580 po->pppoe_dev = NULL; in pppoe_release()
595 delete_item(pn, po->pppoe_pa.sid, po->pppoe_pa.remote, in pppoe_release()
596 po->pppoe_ifindex); in pppoe_release()
613 struct pppox_sock *po = pppox_sk(sk); in pppoe_connect() local
644 if (stage_session(po->pppoe_pa.sid)) { in pppoe_connect()
647 delete_item(pn, po->pppoe_pa.sid, in pppoe_connect()
648 po->pppoe_pa.remote, po->pppoe_ifindex); in pppoe_connect()
649 if (po->pppoe_dev) { in pppoe_connect()
650 dev_put(po->pppoe_dev); in pppoe_connect()
651 po->pppoe_dev = NULL; in pppoe_connect()
654 po->pppoe_ifindex = 0; in pppoe_connect()
655 memset(&po->pppoe_pa, 0, sizeof(po->pppoe_pa)); in pppoe_connect()
656 memset(&po->pppoe_relay, 0, sizeof(po->pppoe_relay)); in pppoe_connect()
657 memset(&po->chan, 0, sizeof(po->chan)); in pppoe_connect()
658 po->next = NULL; in pppoe_connect()
659 po->num = 0; in pppoe_connect()
672 po->pppoe_dev = dev; in pppoe_connect()
673 po->pppoe_ifindex = dev->ifindex; in pppoe_connect()
679 memcpy(&po->pppoe_pa, in pppoe_connect()
684 error = __set_item(pn, po); in pppoe_connect()
689 po->chan.hdrlen = (sizeof(struct pppoe_hdr) + in pppoe_connect()
692 po->chan.mtu = dev->mtu - sizeof(struct pppoe_hdr) - 2; in pppoe_connect()
693 po->chan.private = sk; in pppoe_connect()
694 po->chan.ops = &pppoe_chan_ops; in pppoe_connect()
696 error = ppp_register_net_channel(dev_net(dev), &po->chan); in pppoe_connect()
698 delete_item(pn, po->pppoe_pa.sid, in pppoe_connect()
699 po->pppoe_pa.remote, po->pppoe_ifindex); in pppoe_connect()
706 po->num = sp->sa_addr.pppoe.sid; in pppoe_connect()
712 if (po->pppoe_dev) { in pppoe_connect()
713 dev_put(po->pppoe_dev); in pppoe_connect()
714 po->pppoe_dev = NULL; in pppoe_connect()
739 struct pppox_sock *po = pppox_sk(sk); in pppoe_ioctl() local
750 if (put_user(po->pppoe_dev->mtu - in pppoe_ioctl()
767 if (val < (po->pppoe_dev->mtu in pppoe_ioctl()
797 if (copy_from_user(&po->pppoe_relay, in pppoe_ioctl()
803 if (po->pppoe_relay.sa_family != AF_PPPOX || in pppoe_ioctl()
804 po->pppoe_relay.sa_protocol != PX_PROTO_OE) in pppoe_ioctl()
809 relay_po = get_item_by_addr(sock_net(sk), &po->pppoe_relay); in pppoe_ioctl()
840 struct pppox_sock *po = pppox_sk(sk); in pppoe_sendmsg() local
857 hdr.sid = po->num; in pppoe_sendmsg()
859 dev = po->pppoe_dev; in pppoe_sendmsg()
893 po->pppoe_pa.remote, NULL, total_len); in pppoe_sendmsg()
913 struct pppox_sock *po = pppox_sk(sk); in __pppoe_xmit() local
914 struct net_device *dev = po->pppoe_dev; in __pppoe_xmit()
945 ph->sid = po->num; in __pppoe_xmit()
952 po->pppoe_pa.remote, NULL, data_len); in __pppoe_xmit()
1012 struct pppox_sock *po; in pppoe_seq_show() local
1020 po = v; in pppoe_seq_show()
1021 dev_name = po->pppoe_pa.dev; in pppoe_seq_show()
1024 po->pppoe_pa.sid, po->pppoe_pa.remote, dev_name); in pppoe_seq_show()
1031 struct pppox_sock *po; in pppoe_get_idx() local
1035 po = pn->hash_table[i]; in pppoe_get_idx()
1036 while (po) { in pppoe_get_idx()
1039 po = po->next; in pppoe_get_idx()
1044 return po; in pppoe_get_idx()
1060 struct pppox_sock *po; in pppoe_seq_next() local
1064 po = pppoe_get_idx(pn, 0); in pppoe_seq_next()
1067 po = v; in pppoe_seq_next()
1068 if (po->next) in pppoe_seq_next()
1069 po = po->next; in pppoe_seq_next()
1071 int hash = hash_item(po->pppoe_pa.sid, po->pppoe_pa.remote); in pppoe_seq_next()
1073 po = NULL; in pppoe_seq_next()
1075 po = pn->hash_table[hash]; in pppoe_seq_next()
1076 if (po) in pppoe_seq_next()
1082 return po; in pppoe_seq_next()