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