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
453 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex); in pppoe_rcv()
454 if (!po) in pppoe_rcv()
457 return sk_receive_skb(sk_pppox(po), skb, 0); in pppoe_rcv()
467 struct pppox_sock *po = container_of(work, struct pppox_sock, in pppoe_unbind_sock_work() local
469 struct sock *sk = sk_pppox(po); in pppoe_unbind_sock_work()
472 if (po->pppoe_dev) { in pppoe_unbind_sock_work()
473 dev_put(po->pppoe_dev); in pppoe_unbind_sock_work()
474 po->pppoe_dev = NULL; in pppoe_unbind_sock_work()
492 struct pppox_sock *po; in pppoe_disc_rcv() local
507 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex); in pppoe_disc_rcv()
508 if (po) in pppoe_disc_rcv()
509 if (!schedule_work(&po->proto.pppoe.padt_work)) in pppoe_disc_rcv()
510 sock_put(sk_pppox(po)); in pppoe_disc_rcv()
567 struct pppox_sock *po; in pppoe_release() local
580 po = pppox_sk(sk); in pppoe_release()
582 if (po->pppoe_dev) { in pppoe_release()
583 dev_put(po->pppoe_dev); in pppoe_release()
584 po->pppoe_dev = NULL; in pppoe_release()
599 delete_item(pn, po->pppoe_pa.sid, po->pppoe_pa.remote, in pppoe_release()
600 po->pppoe_ifindex); in pppoe_release()
617 struct pppox_sock *po = pppox_sk(sk); in pppoe_connect() local
648 if (stage_session(po->pppoe_pa.sid)) { in pppoe_connect()
651 delete_item(pn, po->pppoe_pa.sid, in pppoe_connect()
652 po->pppoe_pa.remote, po->pppoe_ifindex); in pppoe_connect()
653 if (po->pppoe_dev) { in pppoe_connect()
654 dev_put(po->pppoe_dev); in pppoe_connect()
655 po->pppoe_dev = NULL; in pppoe_connect()
658 po->pppoe_ifindex = 0; in pppoe_connect()
659 memset(&po->pppoe_pa, 0, sizeof(po->pppoe_pa)); in pppoe_connect()
660 memset(&po->pppoe_relay, 0, sizeof(po->pppoe_relay)); in pppoe_connect()
661 memset(&po->chan, 0, sizeof(po->chan)); in pppoe_connect()
662 po->next = NULL; in pppoe_connect()
663 po->num = 0; in pppoe_connect()
676 po->pppoe_dev = dev; in pppoe_connect()
677 po->pppoe_ifindex = dev->ifindex; in pppoe_connect()
683 memcpy(&po->pppoe_pa, in pppoe_connect()
688 error = __set_item(pn, po); in pppoe_connect()
693 po->chan.hdrlen = (sizeof(struct pppoe_hdr) + in pppoe_connect()
696 po->chan.mtu = dev->mtu - sizeof(struct pppoe_hdr) - 2; in pppoe_connect()
697 po->chan.private = sk; in pppoe_connect()
698 po->chan.ops = &pppoe_chan_ops; in pppoe_connect()
700 error = ppp_register_net_channel(dev_net(dev), &po->chan); in pppoe_connect()
702 delete_item(pn, po->pppoe_pa.sid, in pppoe_connect()
703 po->pppoe_pa.remote, po->pppoe_ifindex); in pppoe_connect()
710 po->num = sp->sa_addr.pppoe.sid; in pppoe_connect()
716 if (po->pppoe_dev) { in pppoe_connect()
717 dev_put(po->pppoe_dev); in pppoe_connect()
718 po->pppoe_dev = NULL; in pppoe_connect()
743 struct pppox_sock *po = pppox_sk(sk); in pppoe_ioctl() local
754 if (put_user(po->pppoe_dev->mtu - in pppoe_ioctl()
771 if (val < (po->pppoe_dev->mtu in pppoe_ioctl()
801 if (copy_from_user(&po->pppoe_relay, in pppoe_ioctl()
807 if (po->pppoe_relay.sa_family != AF_PPPOX || in pppoe_ioctl()
808 po->pppoe_relay.sa_protocol != PX_PROTO_OE) in pppoe_ioctl()
813 relay_po = get_item_by_addr(sock_net(sk), &po->pppoe_relay); in pppoe_ioctl()
844 struct pppox_sock *po = pppox_sk(sk); in pppoe_sendmsg() local
861 hdr.sid = po->num; in pppoe_sendmsg()
863 dev = po->pppoe_dev; in pppoe_sendmsg()
897 po->pppoe_pa.remote, NULL, total_len); in pppoe_sendmsg()
917 struct pppox_sock *po = pppox_sk(sk); in __pppoe_xmit() local
918 struct net_device *dev = po->pppoe_dev; in __pppoe_xmit()
949 ph->sid = po->num; in __pppoe_xmit()
956 po->pppoe_pa.remote, NULL, data_len); in __pppoe_xmit()
1016 struct pppox_sock *po; in pppoe_seq_show() local
1024 po = v; in pppoe_seq_show()
1025 dev_name = po->pppoe_pa.dev; in pppoe_seq_show()
1028 po->pppoe_pa.sid, po->pppoe_pa.remote, dev_name); in pppoe_seq_show()
1035 struct pppox_sock *po; in pppoe_get_idx() local
1039 po = pn->hash_table[i]; in pppoe_get_idx()
1040 while (po) { in pppoe_get_idx()
1043 po = po->next; in pppoe_get_idx()
1048 return po; in pppoe_get_idx()
1064 struct pppox_sock *po; in pppoe_seq_next() local
1068 po = pppoe_get_idx(pn, 0); in pppoe_seq_next()
1071 po = v; in pppoe_seq_next()
1072 if (po->next) in pppoe_seq_next()
1073 po = po->next; in pppoe_seq_next()
1075 int hash = hash_item(po->pppoe_pa.sid, po->pppoe_pa.remote); in pppoe_seq_next()
1077 po = NULL; in pppoe_seq_next()
1079 po = pn->hash_table[hash]; in pppoe_seq_next()
1080 if (po) in pppoe_seq_next()
1086 return po; in pppoe_seq_next()