1302 if (dev->flags & IFF_UP)
1303 dn_dev_up(dev);
1304 }
1305 rtnl_unlock();
1306}
1307
1308int register_dnaddr_notifier(struct notifier_block *nb)
1309{
1310 return blocking_notifier_chain_register(&dnaddr_chain, nb);
1311}
1312
1313int unregister_dnaddr_notifier(struct notifier_block *nb)
1314{
1315 return blocking_notifier_chain_unregister(&dnaddr_chain, nb);
1316}
1317
1318#ifdef CONFIG_PROC_FS
1319static inline int is_dn_dev(struct net_device *dev)
1320{
1321 return dev->dn_ptr != NULL;
1322}
1323
1324static void *dn_dev_seq_start(struct seq_file *seq, loff_t *pos)
1325{
1326 int i;
1327 struct net_device *dev;
1328
1329 read_lock(&dev_base_lock);
1330
1331 if (*pos == 0)
1332 return SEQ_START_TOKEN;
1333
1334 i = 1;
1335 for_each_netdev(&init_net, dev) {
1336 if (!is_dn_dev(dev))
1337 continue;
1338
1339 if (i++ == *pos)
1340 return dev;
1341 }
1342