Lines Matching refs:newp

203 	struct ip6addrlbl_entry *newp;  in ip6addrlbl_alloc()  local
228 newp = kmalloc(sizeof(*newp), GFP_KERNEL); in ip6addrlbl_alloc()
229 if (!newp) in ip6addrlbl_alloc()
232 ipv6_addr_prefix(&newp->prefix, prefix, prefixlen); in ip6addrlbl_alloc()
233 newp->prefixlen = prefixlen; in ip6addrlbl_alloc()
234 newp->ifindex = ifindex; in ip6addrlbl_alloc()
235 newp->addrtype = addrtype; in ip6addrlbl_alloc()
236 newp->label = label; in ip6addrlbl_alloc()
237 INIT_HLIST_NODE(&newp->list); in ip6addrlbl_alloc()
238 write_pnet(&newp->lbl_net, net); in ip6addrlbl_alloc()
239 atomic_set(&newp->refcnt, 1); in ip6addrlbl_alloc()
240 return newp; in ip6addrlbl_alloc()
244 static int __ip6addrlbl_add(struct ip6addrlbl_entry *newp, int replace) in __ip6addrlbl_add() argument
250 ADDRLABEL(KERN_DEBUG "%s(newp=%p, replace=%d)\n", __func__, newp, in __ip6addrlbl_add()
254 if (p->prefixlen == newp->prefixlen && in __ip6addrlbl_add()
255 net_eq(ip6addrlbl_net(p), ip6addrlbl_net(newp)) && in __ip6addrlbl_add()
256 p->ifindex == newp->ifindex && in __ip6addrlbl_add()
257 ipv6_addr_equal(&p->prefix, &newp->prefix)) { in __ip6addrlbl_add()
262 hlist_replace_rcu(&p->list, &newp->list); in __ip6addrlbl_add()
265 } else if ((p->prefixlen == newp->prefixlen && !p->ifindex) || in __ip6addrlbl_add()
266 (p->prefixlen < newp->prefixlen)) { in __ip6addrlbl_add()
267 hlist_add_before_rcu(&newp->list, &p->list); in __ip6addrlbl_add()
273 hlist_add_behind_rcu(&newp->list, &last->list); in __ip6addrlbl_add()
275 hlist_add_head_rcu(&newp->list, &ip6addrlbl_table.head); in __ip6addrlbl_add()
287 struct ip6addrlbl_entry *newp; in ip6addrlbl_add() local
294 newp = ip6addrlbl_alloc(net, prefix, prefixlen, ifindex, label); in ip6addrlbl_add()
295 if (IS_ERR(newp)) in ip6addrlbl_add()
296 return PTR_ERR(newp); in ip6addrlbl_add()
298 ret = __ip6addrlbl_add(newp, replace); in ip6addrlbl_add()
301 ip6addrlbl_free(newp); in ip6addrlbl_add()