Lines Matching refs:newp

164 	struct ip6addrlbl_entry *newp;  in ip6addrlbl_alloc()  local
189 newp = kmalloc(sizeof(*newp), GFP_KERNEL); in ip6addrlbl_alloc()
190 if (!newp) in ip6addrlbl_alloc()
193 ipv6_addr_prefix(&newp->prefix, prefix, prefixlen); in ip6addrlbl_alloc()
194 newp->prefixlen = prefixlen; in ip6addrlbl_alloc()
195 newp->ifindex = ifindex; in ip6addrlbl_alloc()
196 newp->addrtype = addrtype; in ip6addrlbl_alloc()
197 newp->label = label; in ip6addrlbl_alloc()
198 INIT_HLIST_NODE(&newp->list); in ip6addrlbl_alloc()
199 return newp; in ip6addrlbl_alloc()
203 static int __ip6addrlbl_add(struct net *net, struct ip6addrlbl_entry *newp, in __ip6addrlbl_add() argument
210 ADDRLABEL(KERN_DEBUG "%s(newp=%p, replace=%d)\n", __func__, newp, in __ip6addrlbl_add()
214 if (p->prefixlen == newp->prefixlen && in __ip6addrlbl_add()
215 p->ifindex == newp->ifindex && in __ip6addrlbl_add()
216 ipv6_addr_equal(&p->prefix, &newp->prefix)) { in __ip6addrlbl_add()
221 hlist_replace_rcu(&p->list, &newp->list); in __ip6addrlbl_add()
224 } else if ((p->prefixlen == newp->prefixlen && !p->ifindex) || in __ip6addrlbl_add()
225 (p->prefixlen < newp->prefixlen)) { in __ip6addrlbl_add()
226 hlist_add_before_rcu(&newp->list, &p->list); in __ip6addrlbl_add()
232 hlist_add_behind_rcu(&newp->list, &last->list); in __ip6addrlbl_add()
234 hlist_add_head_rcu(&newp->list, &net->ipv6.ip6addrlbl_table.head); in __ip6addrlbl_add()
246 struct ip6addrlbl_entry *newp; in ip6addrlbl_add() local
253 newp = ip6addrlbl_alloc(prefix, prefixlen, ifindex, label); in ip6addrlbl_add()
254 if (IS_ERR(newp)) in ip6addrlbl_add()
255 return PTR_ERR(newp); in ip6addrlbl_add()
257 ret = __ip6addrlbl_add(net, newp, replace); in ip6addrlbl_add()
260 kfree(newp); in ip6addrlbl_add()