Lines Matching refs:dn_db
253 struct dn_dev *dn_db; in dn_forwarding_proc() local
260 dn_db = rcu_dereference_raw(dev->dn_ptr); in dn_forwarding_proc()
261 old = dn_db->parms.forwarding; in dn_forwarding_proc()
266 if (dn_db->parms.forwarding < 0) in dn_forwarding_proc()
267 dn_db->parms.forwarding = 0; in dn_forwarding_proc()
268 if (dn_db->parms.forwarding > 2) in dn_forwarding_proc()
269 dn_db->parms.forwarding = 2; in dn_forwarding_proc()
276 tmp = dn_db->parms.forwarding; in dn_forwarding_proc()
277 dn_db->parms.forwarding = old; in dn_forwarding_proc()
278 if (dn_db->parms.down) in dn_forwarding_proc()
279 dn_db->parms.down(dev); in dn_forwarding_proc()
280 dn_db->parms.forwarding = tmp; in dn_forwarding_proc()
281 if (dn_db->parms.up) in dn_forwarding_proc()
282 dn_db->parms.up(dev); in dn_forwarding_proc()
330 static void dn_dev_del_ifa(struct dn_dev *dn_db, struct dn_ifaddr __rcu **ifap, int destroy) in dn_dev_del_ifa() argument
334 struct net_device *dev = dn_db->dev; in dn_dev_del_ifa()
340 if (dn_db->dev->type == ARPHRD_ETHER) { in dn_dev_del_ifa()
352 if (dn_db->ifa_list == NULL) in dn_dev_del_ifa()
353 dn_dev_delete(dn_db->dev); in dn_dev_del_ifa()
357 static int dn_dev_insert_ifa(struct dn_dev *dn_db, struct dn_ifaddr *ifa) in dn_dev_insert_ifa() argument
359 struct net_device *dev = dn_db->dev; in dn_dev_insert_ifa()
366 for (ifa1 = rtnl_dereference(dn_db->ifa_list); in dn_dev_insert_ifa()
380 ifa->ifa_next = dn_db->ifa_list; in dn_dev_insert_ifa()
381 rcu_assign_pointer(dn_db->ifa_list, ifa); in dn_dev_insert_ifa()
391 struct dn_dev *dn_db = rtnl_dereference(dev->dn_ptr); in dn_dev_set_ifa() local
394 if (dn_db == NULL) { in dn_dev_set_ifa()
396 dn_db = dn_dev_create(dev, &err); in dn_dev_set_ifa()
397 if (dn_db == NULL) in dn_dev_set_ifa()
401 ifa->ifa_dev = dn_db; in dn_dev_set_ifa()
406 rv = dn_dev_insert_ifa(dn_db, ifa); in dn_dev_set_ifa()
418 struct dn_dev *dn_db; in dn_dev_ioctl() local
450 if ((dn_db = rtnl_dereference(dev->dn_ptr)) != NULL) { in dn_dev_ioctl()
451 for (ifap = &dn_db->ifa_list; in dn_dev_ioctl()
478 dn_dev_del_ifa(dn_db, ifap, 0); in dn_dev_ioctl()
574 struct dn_dev *dn_db; in dn_nl_deladdr() local
593 if ((dn_db = dn_dev_by_index(ifm->ifa_index)) == NULL) in dn_nl_deladdr()
597 for (ifap = &dn_db->ifa_list; in dn_nl_deladdr()
607 dn_dev_del_ifa(dn_db, ifap, 1); in dn_nl_deladdr()
621 struct dn_dev *dn_db; in dn_nl_newaddr() local
644 if ((dn_db = rtnl_dereference(dev->dn_ptr)) == NULL) { in dn_nl_newaddr()
645 dn_db = dn_dev_create(dev, &err); in dn_nl_newaddr()
646 if (!dn_db) in dn_nl_newaddr()
661 ifa->ifa_dev = dn_db; in dn_nl_newaddr()
668 err = dn_dev_insert_ifa(dn_db, ifa); in dn_nl_newaddr()
746 struct dn_dev *dn_db; in dn_nl_dump_ifaddr() local
766 if ((dn_db = rcu_dereference(dev->dn_ptr)) == NULL) in dn_nl_dump_ifaddr()
769 for (ifa = rcu_dereference(dn_db->ifa_list), dn_idx = 0; ifa; in dn_nl_dump_ifaddr()
792 struct dn_dev *dn_db; in dn_dev_get_first() local
797 dn_db = rcu_dereference(dev->dn_ptr); in dn_dev_get_first()
798 if (dn_db == NULL) in dn_dev_get_first()
801 ifa = rcu_dereference(dn_db->ifa_list); in dn_dev_get_first()
843 struct dn_dev *dn_db = rcu_dereference_raw(dev->dn_ptr); in dn_send_endnode_hello() local
861 if (dn_db->router) { in dn_send_endnode_hello()
862 struct dn_neigh *dn = (struct dn_neigh *)dn_db->router; in dn_send_endnode_hello()
866 msg->timer = cpu_to_le16((unsigned short)dn_db->parms.t3); in dn_send_endnode_hello()
882 static int dn_am_i_a_router(struct dn_neigh *dn, struct dn_dev *dn_db, struct dn_ifaddr *ifa) in dn_am_i_a_router() argument
885 if (time_before(jiffies, dn_db->uptime + DRDELAY)) in dn_am_i_a_router()
889 if (!dn_db->router) in dn_am_i_a_router()
893 if (dn->priority < dn_db->parms.priority) in dn_am_i_a_router()
897 if (dn->priority != dn_db->parms.priority) in dn_am_i_a_router()
909 struct dn_dev *dn_db = rcu_dereference_raw(dev->dn_ptr); in dn_send_router_hello() local
910 struct dn_neigh *dn = (struct dn_neigh *)dn_db->router; in dn_send_router_hello()
942 *ptr++ = dn_db->parms.forwarding == 1 ? in dn_send_router_hello()
946 *ptr++ = dn_db->parms.priority; /* Priority */ in dn_send_router_hello()
948 *((__le16 *)ptr) = cpu_to_le16((unsigned short)dn_db->parms.t3); in dn_send_router_hello()
968 if (dn_am_i_a_router(dn, dn_db, ifa)) { in dn_send_router_hello()
980 struct dn_dev *dn_db = rcu_dereference_raw(dev->dn_ptr); in dn_send_brd_hello() local
982 if (dn_db->parms.forwarding == 0) in dn_send_brd_hello()
1018 struct dn_dev *dn_db = rcu_dereference_raw(dev->dn_ptr); in dn_eth_up() local
1020 if (dn_db->parms.forwarding == 0) in dn_eth_up()
1025 dn_db->use_long = 1; in dn_eth_up()
1032 struct dn_dev *dn_db = rcu_dereference_raw(dev->dn_ptr); in dn_eth_down() local
1034 if (dn_db->parms.forwarding == 0) in dn_eth_down()
1044 struct dn_dev *dn_db = from_timer(dn_db, t, timer); in dn_dev_timer_func() local
1049 dev = dn_db->dev; in dn_dev_timer_func()
1050 if (dn_db->t3 <= dn_db->parms.t2) { in dn_dev_timer_func()
1051 if (dn_db->parms.timer3) { in dn_dev_timer_func()
1052 for (ifa = rcu_dereference(dn_db->ifa_list); in dn_dev_timer_func()
1056 dn_db->parms.timer3(dev, ifa); in dn_dev_timer_func()
1059 dn_db->t3 = dn_db->parms.t3; in dn_dev_timer_func()
1061 dn_db->t3 -= dn_db->parms.t2; in dn_dev_timer_func()
1069 struct dn_dev *dn_db = rcu_dereference_raw(dev->dn_ptr); in dn_dev_set_timer() local
1071 if (dn_db->parms.t2 > dn_db->parms.t3) in dn_dev_set_timer()
1072 dn_db->parms.t2 = dn_db->parms.t3; in dn_dev_set_timer()
1074 dn_db->timer.expires = jiffies + (dn_db->parms.t2 * HZ); in dn_dev_set_timer()
1076 add_timer(&dn_db->timer); in dn_dev_set_timer()
1083 struct dn_dev *dn_db; in dn_dev_create() local
1095 if ((dn_db = kzalloc(sizeof(struct dn_dev), GFP_ATOMIC)) == NULL) in dn_dev_create()
1098 memcpy(&dn_db->parms, p, sizeof(struct dn_dev_parms)); in dn_dev_create()
1100 rcu_assign_pointer(dev->dn_ptr, dn_db); in dn_dev_create()
1101 dn_db->dev = dev; in dn_dev_create()
1102 timer_setup(&dn_db->timer, dn_dev_timer_func, 0); in dn_dev_create()
1104 dn_db->uptime = jiffies; in dn_dev_create()
1106 dn_db->neigh_parms = neigh_parms_alloc(dev, &dn_neigh_table); in dn_dev_create()
1107 if (!dn_db->neigh_parms) { in dn_dev_create()
1109 kfree(dn_db); in dn_dev_create()
1113 if (dn_db->parms.up) { in dn_dev_create()
1114 if (dn_db->parms.up(dev) < 0) { in dn_dev_create()
1115 neigh_parms_release(&dn_neigh_table, dn_db->neigh_parms); in dn_dev_create()
1117 kfree(dn_db); in dn_dev_create()
1122 dn_dev_sysctl_register(dev, &dn_db->parms); in dn_dev_create()
1127 return dn_db; in dn_dev_create()
1147 struct dn_dev *dn_db = rtnl_dereference(dev->dn_ptr); in dn_dev_up() local
1158 if (dn_db == NULL) { in dn_dev_up()
1160 dn_db = dn_dev_create(dev, &err); in dn_dev_up()
1161 if (dn_db == NULL) in dn_dev_up()
1198 struct dn_dev *dn_db = rtnl_dereference(dev->dn_ptr); in dn_dev_delete() local
1200 if (dn_db == NULL) in dn_dev_delete()
1203 del_timer_sync(&dn_db->timer); in dn_dev_delete()
1204 dn_dev_sysctl_unregister(&dn_db->parms); in dn_dev_delete()
1208 if (dn_db->parms.down) in dn_dev_delete()
1209 dn_db->parms.down(dev); in dn_dev_delete()
1213 neigh_parms_release(&dn_neigh_table, dn_db->neigh_parms); in dn_dev_delete()
1216 if (dn_db->router) in dn_dev_delete()
1217 neigh_release(dn_db->router); in dn_dev_delete()
1218 if (dn_db->peer) in dn_dev_delete()
1219 neigh_release(dn_db->peer); in dn_dev_delete()
1221 kfree(dn_db); in dn_dev_delete()
1226 struct dn_dev *dn_db = rtnl_dereference(dev->dn_ptr); in dn_dev_down() local
1229 if (dn_db == NULL) in dn_dev_down()
1232 while ((ifa = rtnl_dereference(dn_db->ifa_list)) != NULL) { in dn_dev_down()
1233 dn_dev_del_ifa(dn_db, &dn_db->ifa_list, 0); in dn_dev_down()
1362 struct dn_dev *dn_db = rcu_dereference(dev->dn_ptr); in dn_dev_seq_show() local
1367 dn_type2asc(dn_db->parms.mode), in dn_dev_seq_show()
1369 dn_db->t3, dn_db->parms.t3, in dn_dev_seq_show()
1371 dn_db->parms.priority, in dn_dev_seq_show()
1372 dn_db->parms.state, dn_db->parms.name, in dn_dev_seq_show()
1373 … dn_db->router ? dn_addr2asc(le16_to_cpu(*(__le16 *)dn_db->router->primary_key), router_buf) : "", in dn_dev_seq_show()
1374 dn_db->peer ? dn_addr2asc(le16_to_cpu(*(__le16 *)dn_db->peer->primary_key), peer_buf) : ""); in dn_dev_seq_show()