Lines Matching refs:ndev
330 struct inet6_dev *ndev; in ipv6_add_dev() local
338 ndev = kzalloc(sizeof(struct inet6_dev), GFP_KERNEL); in ipv6_add_dev()
339 if (!ndev) in ipv6_add_dev()
342 rwlock_init(&ndev->lock); in ipv6_add_dev()
343 ndev->dev = dev; in ipv6_add_dev()
344 INIT_LIST_HEAD(&ndev->addr_list); in ipv6_add_dev()
345 setup_timer(&ndev->rs_timer, addrconf_rs_timer, in ipv6_add_dev()
346 (unsigned long)ndev); in ipv6_add_dev()
347 memcpy(&ndev->cnf, dev_net(dev)->ipv6.devconf_dflt, sizeof(ndev->cnf)); in ipv6_add_dev()
349 if (ndev->cnf.stable_secret.initialized) in ipv6_add_dev()
350 ndev->addr_gen_mode = IN6_ADDR_GEN_MODE_STABLE_PRIVACY; in ipv6_add_dev()
352 ndev->addr_gen_mode = IN6_ADDR_GEN_MODE_EUI64; in ipv6_add_dev()
354 ndev->cnf.mtu6 = dev->mtu; in ipv6_add_dev()
355 ndev->cnf.sysctl = NULL; in ipv6_add_dev()
356 ndev->nd_parms = neigh_parms_alloc(dev, &nd_tbl); in ipv6_add_dev()
357 if (!ndev->nd_parms) { in ipv6_add_dev()
358 kfree(ndev); in ipv6_add_dev()
361 if (ndev->cnf.forwarding) in ipv6_add_dev()
366 if (snmp6_alloc_dev(ndev) < 0) { in ipv6_add_dev()
370 neigh_parms_release(&nd_tbl, ndev->nd_parms); in ipv6_add_dev()
372 kfree(ndev); in ipv6_add_dev()
376 if (snmp6_register_dev(ndev) < 0) { in ipv6_add_dev()
386 in6_dev_hold(ndev); in ipv6_add_dev()
389 ndev->cnf.accept_dad = -1; in ipv6_add_dev()
394 ndev->cnf.rtr_solicits = 0; in ipv6_add_dev()
398 INIT_LIST_HEAD(&ndev->tempaddr_list); in ipv6_add_dev()
399 setup_timer(&ndev->regen_timer, ipv6_regen_rndid, (unsigned long)ndev); in ipv6_add_dev()
405 ndev->cnf.use_tempaddr = -1; in ipv6_add_dev()
407 in6_dev_hold(ndev); in ipv6_add_dev()
408 ipv6_regen_rndid((unsigned long) ndev); in ipv6_add_dev()
411 ndev->token = in6addr_any; in ipv6_add_dev()
414 ndev->if_flags |= IF_READY; in ipv6_add_dev()
416 ipv6_mc_init_dev(ndev); in ipv6_add_dev()
417 ndev->tstamp = jiffies; in ipv6_add_dev()
418 err = addrconf_sysctl_register(ndev); in ipv6_add_dev()
420 ipv6_mc_destroy_dev(ndev); in ipv6_add_dev()
421 del_timer(&ndev->regen_timer); in ipv6_add_dev()
422 snmp6_unregister_dev(ndev); in ipv6_add_dev()
426 rcu_assign_pointer(dev->ip6_ptr, ndev); in ipv6_add_dev()
435 if (ndev->cnf.forwarding && (dev->flags & IFF_MULTICAST)) in ipv6_add_dev()
438 return ndev; in ipv6_add_dev()
441 neigh_parms_release(&nd_tbl, ndev->nd_parms); in ipv6_add_dev()
442 ndev->dead = 1; in ipv6_add_dev()
443 in6_dev_finish_destroy(ndev); in ipv6_add_dev()