Lines Matching refs:peer
150 static void rtnl_net_notifyid(struct net *net, struct net *peer, int cmd,
152 static int alloc_netid(struct net *net, struct net *peer, int reqid) in alloc_netid() argument
163 id = idr_alloc(&net->netns_ids, peer, min, max, GFP_KERNEL); in alloc_netid()
165 rtnl_net_notifyid(net, peer, RTM_NEWNSID, id); in alloc_netid()
176 static int net_eq_idr(int id, void *net, void *peer) in net_eq_idr() argument
178 if (net_eq(net, peer)) in net_eq_idr()
183 static int __peernet2id(struct net *net, struct net *peer, bool alloc) in __peernet2id() argument
185 int id = idr_for_each(&net->netns_ids, net_eq_idr, peer); in __peernet2id()
196 return alloc_netid(net, peer, -1); in __peernet2id()
204 int peernet2id(struct net *net, struct net *peer) in peernet2id() argument
206 bool alloc = atomic_read(&peer->count) == 0 ? false : true; in peernet2id()
209 id = __peernet2id(net, peer, alloc); in peernet2id()
216 struct net *peer; in get_net_ns_by_id() local
222 peer = idr_find(&net->netns_ids, id); in get_net_ns_by_id()
223 if (peer) in get_net_ns_by_id()
224 get_net(peer); in get_net_ns_by_id()
227 return peer; in get_net_ns_by_id()
500 struct net *peer; in rtnl_net_newid() local
512 peer = get_net_ns_by_pid(nla_get_u32(tb[NETNSA_PID])); in rtnl_net_newid()
514 peer = get_net_ns_by_fd(nla_get_u32(tb[NETNSA_FD])); in rtnl_net_newid()
517 if (IS_ERR(peer)) in rtnl_net_newid()
518 return PTR_ERR(peer); in rtnl_net_newid()
520 if (__peernet2id(net, peer, false) >= 0) { in rtnl_net_newid()
525 err = alloc_netid(net, peer, nsid); in rtnl_net_newid()
529 put_net(peer); in rtnl_net_newid()
541 int cmd, struct net *net, struct net *peer, in rtnl_net_fill() argument
560 id = __peernet2id(net, peer, false); in rtnl_net_fill()
580 struct net *peer; in rtnl_net_getid() local
588 peer = get_net_ns_by_pid(nla_get_u32(tb[NETNSA_PID])); in rtnl_net_getid()
590 peer = get_net_ns_by_fd(nla_get_u32(tb[NETNSA_FD])); in rtnl_net_getid()
594 if (IS_ERR(peer)) in rtnl_net_getid()
595 return PTR_ERR(peer); in rtnl_net_getid()
604 RTM_NEWNSID, net, peer, -1); in rtnl_net_getid()
614 put_net(peer); in rtnl_net_getid()
626 static int rtnl_net_dumpid_one(int id, void *peer, void *data) in rtnl_net_dumpid_one() argument
636 RTM_NEWNSID, net_cb->net, peer, id); in rtnl_net_dumpid_one()
664 static void rtnl_net_notifyid(struct net *net, struct net *peer, int cmd, in rtnl_net_notifyid() argument
674 err = rtnl_net_fill(msg, 0, 0, 0, cmd, net, peer, id); in rtnl_net_notifyid()