On Fri, Jul 31, 2015 at 02:35:02PM -0300, Thadeu Lima de Souza Cascardo wrote: > Whenever system interfaces are removed, added or change state, reconfigure > bridge. This allows late interfaces to be added to the datapath when they are > added to the system after ovs-vswitchd is started. > > Signed-off-by: Thadeu Lima de Souza Cascardo <casca...@redhat.com>
Thanks. This seems useful. It might be too aggressive, but I'm willing to take a "wait and see" attitude before making it more complicated. I noticed that it doesn't immediately wake up if something changed following bridge_run(), which seems entirely possible since there might be more than one place that calls rtnetlink_run(), so just to be sure I folded this in: diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index 625105b..f021360 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -3023,6 +3023,9 @@ bridge_wait(void) } if_notifier_wait(); + if (ifaces_changed) { + poll_immediate_wake(); + } sset_init(&types); ofproto_enumerate_types(&types); I also folded in the following stylistic fixes, and applied the commit to master. Thank you! diff --git a/lib/if-notifier-bsd.c b/lib/if-notifier-bsd.c index a1c3d0e..b57b4b1 100644 --- a/lib/if-notifier-bsd.c +++ b/lib/if-notifier-bsd.c @@ -25,8 +25,8 @@ struct if_notifier { void *aux; }; -static void if_notifier_cb(const struct rtbsd_change *change OVS_UNUSED, - void *aux) +static void +if_notifier_cb(const struct rtbsd_change *change OVS_UNUSED, void *aux) { struct if_notifier *notifier; notifier = aux; @@ -50,7 +50,8 @@ if_notifier_create(if_notify_func *cb, void *aux) return notifier; } -void if_notifier_destroy(struct if_notifier *notifier) +void +if_notifier_destroy(struct if_notifier *notifier) { if (notifier) { rtbsd_notifier_unregister(¬ifier->notifier); @@ -58,12 +59,14 @@ void if_notifier_destroy(struct if_notifier *notifier) } } -void if_notifier_run(void) +void +if_notifier_run(void) { rtbsd_notifier_run(); } -void if_notifier_wait(void) +void +if_notifier_wait(void) { rtbsd_notifier_wait(); } diff --git a/lib/if-notifier-stub.c b/lib/if-notifier-stub.c index ffd5876..a5b529a 100644 --- a/lib/if-notifier-stub.c +++ b/lib/if-notifier-stub.c @@ -25,14 +25,17 @@ if_notifier_create(if_notify_func *cb OVS_UNUSED, void *aux OVS_UNUSED) return NULL; } -void if_notifier_destroy(struct if_notifier *notifier OVS_UNUSED) +void +if_notifier_destroy(struct if_notifier *notifier OVS_UNUSED) { } -void if_notifier_run(void) +void +if_notifier_run(void) { } -void if_notifier_wait(void) +void +if_notifier_wait(void) { } diff --git a/lib/if-notifier.c b/lib/if-notifier.c index 10cd292..9a64f9b 100644 --- a/lib/if-notifier.c +++ b/lib/if-notifier.c @@ -25,9 +25,8 @@ struct if_notifier { void *aux; }; -static -void if_notifier_cb(const struct rtnetlink_change *change OVS_UNUSED, - void *aux) +static void +if_notifier_cb(const struct rtnetlink_change *change OVS_UNUSED, void *aux) { struct if_notifier *notifier; notifier = aux; @@ -45,7 +44,8 @@ if_notifier_create(if_notify_func *cb, void *aux) return notifier; } -void if_notifier_destroy(struct if_notifier *notifier) +void +if_notifier_destroy(struct if_notifier *notifier) { if (notifier) { rtnetlink_notifier_destroy(notifier->notifier); @@ -53,12 +53,14 @@ void if_notifier_destroy(struct if_notifier *notifier) } } -void if_notifier_run(void) +void +if_notifier_run(void) { rtnetlink_run(); } -void if_notifier_wait(void) +void +if_notifier_wait(void) { rtnetlink_wait(); } diff --git a/lib/if-notifier.h b/lib/if-notifier.h index 69ba08c..259138f 100644 --- a/lib/if-notifier.h +++ b/lib/if-notifier.h @@ -19,14 +19,12 @@ struct if_notifier; -typedef -void if_notify_func(void *aux); +typedef void if_notify_func(void *aux); -struct if_notifier * -if_notifier_create(if_notify_func *, void *aux); +struct if_notifier *if_notifier_create(if_notify_func *, void *aux); void if_notifier_destroy(struct if_notifier *); void if_notifier_run(void); void if_notifier_wait(void); -#endif +#endif /* if-notifier.h */ _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev