X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fnetdev-dummy.c;h=9cd06f194b357be4008b49321def99e2d1a0e71c;hb=84095d268f41efd2754fb920b9e93b665f7b64ba;hp=ea1c5fa3a65a2191d65e960c7bc8f2e4024c8cf4;hpb=ac4d3bcb46fa0acd0b63f79449432df28569f74f;p=openvswitch diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c index ea1c5fa3..9cd06f19 100644 --- a/lib/netdev-dummy.c +++ b/lib/netdev-dummy.c @@ -28,12 +28,6 @@ VLOG_DEFINE_THIS_MODULE(netdev_dummy); -struct netdev_dummy_notifier { - struct netdev_notifier notifier; - struct list list_node; - struct shash_node *shash_node; -}; - struct netdev_dev_dummy { struct netdev_dev netdev_dev; uint8_t hwaddr[ETH_ADDR_LEN]; @@ -47,9 +41,6 @@ struct netdev_dummy { struct netdev netdev; }; -static struct shash netdev_dummy_notifiers = - SHASH_INITIALIZER(&netdev_dummy_notifiers); - static int netdev_dummy_create(const struct netdev_class *, const char *, const struct shash *, struct netdev_dev **); static void netdev_dummy_poll_notify(const struct netdev *); @@ -207,52 +198,6 @@ netdev_dummy_update_flags(struct netdev *netdev, return 0; } -static int -netdev_dummy_poll_add(struct netdev *netdev, - void (*cb)(struct netdev_notifier *), void *aux, - struct netdev_notifier **notifierp) -{ - const char *name = netdev_get_name(netdev); - struct netdev_dummy_notifier *notifier; - struct list *list; - struct shash_node *shash_node; - - shash_node = shash_find_data(&netdev_dummy_notifiers, name); - if (!shash_node) { - list = xmalloc(sizeof *list); - list_init(list); - shash_node = shash_add(&netdev_dummy_notifiers, name, list); - } else { - list = shash_node->data; - } - - notifier = xmalloc(sizeof *notifier); - netdev_notifier_init(¬ifier->notifier, netdev, cb, aux); - list_push_back(list, ¬ifier->list_node); - notifier->shash_node = shash_node; - - *notifierp = ¬ifier->notifier; - - return 0; -} - -static void -netdev_dummy_poll_remove(struct netdev_notifier *notifier_) -{ - struct netdev_dummy_notifier *notifier = - CONTAINER_OF(notifier_, struct netdev_dummy_notifier, notifier); - - struct list *list; - - list = list_remove(¬ifier->list_node); - if (list_is_empty(list)) { - shash_delete(&netdev_dummy_notifiers, notifier->shash_node); - free(list); - } - - free(notifier); -} - static unsigned int netdev_dummy_change_seq(const struct netdev *netdev) { @@ -264,20 +209,9 @@ netdev_dummy_change_seq(const struct netdev *netdev) static void netdev_dummy_poll_notify(const struct netdev *netdev) { - const char *name = netdev_get_name(netdev); - struct list *list = shash_find_data(&netdev_dummy_notifiers, name); struct netdev_dev_dummy *dev = netdev_dev_dummy_cast(netdev_get_dev(netdev)); - if (list) { - struct netdev_dummy_notifier *notifier; - - LIST_FOR_EACH (notifier, list_node, list) { - struct netdev_notifier *n = ¬ifier->notifier; - n->cb(n); - } - } - dev->change_seq++; if (!dev->change_seq) { dev->change_seq++; @@ -292,7 +226,8 @@ static const struct netdev_class dummy_class = { netdev_dummy_create, netdev_dummy_destroy, - NULL, + NULL, /* set_config */ + NULL, /* config_equal */ netdev_dummy_open, netdev_dummy_close, @@ -341,8 +276,6 @@ static const struct netdev_class dummy_class = { netdev_dummy_update_flags, - netdev_dummy_poll_add, - netdev_dummy_poll_remove, netdev_dummy_change_seq };