Lines Matching refs:ndev
335 struct inet6_dev *ndev; in ipv6_add_dev() local
343 ndev = kzalloc(sizeof(struct inet6_dev), GFP_KERNEL); in ipv6_add_dev()
344 if (!ndev) in ipv6_add_dev()
347 rwlock_init(&ndev->lock); in ipv6_add_dev()
348 ndev->dev = dev; in ipv6_add_dev()
349 INIT_LIST_HEAD(&ndev->addr_list); in ipv6_add_dev()
350 setup_timer(&ndev->rs_timer, addrconf_rs_timer, in ipv6_add_dev()
351 (unsigned long)ndev); in ipv6_add_dev()
352 memcpy(&ndev->cnf, dev_net(dev)->ipv6.devconf_dflt, sizeof(ndev->cnf)); in ipv6_add_dev()
354 if (ndev->cnf.stable_secret.initialized) in ipv6_add_dev()
355 ndev->addr_gen_mode = IN6_ADDR_GEN_MODE_STABLE_PRIVACY; in ipv6_add_dev()
357 ndev->addr_gen_mode = IN6_ADDR_GEN_MODE_EUI64; in ipv6_add_dev()
359 ndev->cnf.mtu6 = dev->mtu; in ipv6_add_dev()
360 ndev->cnf.sysctl = NULL; in ipv6_add_dev()
361 ndev->nd_parms = neigh_parms_alloc(dev, &nd_tbl); in ipv6_add_dev()
362 if (!ndev->nd_parms) { in ipv6_add_dev()
363 kfree(ndev); in ipv6_add_dev()
366 if (ndev->cnf.forwarding) in ipv6_add_dev()
371 if (snmp6_alloc_dev(ndev) < 0) { in ipv6_add_dev()
375 neigh_parms_release(&nd_tbl, ndev->nd_parms); in ipv6_add_dev()
377 kfree(ndev); in ipv6_add_dev()
381 if (snmp6_register_dev(ndev) < 0) { in ipv6_add_dev()
391 in6_dev_hold(ndev); in ipv6_add_dev()
394 ndev->cnf.accept_dad = -1; in ipv6_add_dev()
399 ndev->cnf.rtr_solicits = 0; in ipv6_add_dev()
403 INIT_LIST_HEAD(&ndev->tempaddr_list); in ipv6_add_dev()
404 setup_timer(&ndev->regen_timer, ipv6_regen_rndid, (unsigned long)ndev); in ipv6_add_dev()
410 ndev->cnf.use_tempaddr = -1; in ipv6_add_dev()
412 in6_dev_hold(ndev); in ipv6_add_dev()
413 ipv6_regen_rndid((unsigned long) ndev); in ipv6_add_dev()
416 ndev->token = in6addr_any; in ipv6_add_dev()
419 ndev->if_flags |= IF_READY; in ipv6_add_dev()
421 ipv6_mc_init_dev(ndev); in ipv6_add_dev()
422 ndev->tstamp = jiffies; in ipv6_add_dev()
423 err = addrconf_sysctl_register(ndev); in ipv6_add_dev()
425 ipv6_mc_destroy_dev(ndev); in ipv6_add_dev()
426 del_timer(&ndev->regen_timer); in ipv6_add_dev()
427 snmp6_unregister_dev(ndev); in ipv6_add_dev()
431 rcu_assign_pointer(dev->ip6_ptr, ndev); in ipv6_add_dev()
440 if (ndev->cnf.forwarding && (dev->flags & IFF_MULTICAST)) in ipv6_add_dev()
443 return ndev; in ipv6_add_dev()
446 neigh_parms_release(&nd_tbl, ndev->nd_parms); in ipv6_add_dev()
447 ndev->dead = 1; in ipv6_add_dev()
448 in6_dev_finish_destroy(ndev); in ipv6_add_dev()