The title and description should be updated to "ovn-northd", but otherwise:
Acked-by: Justin Pettit <jpet...@nicira.com> --Justin > On Apr 17, 2015, at 1:17 PM, Russell Bryant <rbry...@redhat.com> wrote: > > ovn-nbd updates the Bindings table of the OVN database when there are > updates to the OVN_Northbound database. This update makes ovn-nbd > copy over the container integration related fields from OVN_Northbound > into the Bindings table. > > Signed-off-by: Russell Bryant <rbry...@redhat.com> > --- > ovn/northd/ovn-northd.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 42 insertions(+), 2 deletions(-) > > diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c > index 7e2df43..0a2756e 100644 > --- a/ovn/northd/ovn-northd.c > +++ b/ovn/northd/ovn-northd.c > @@ -114,6 +114,35 @@ macs_equal(char **binding_macs_, size_t b_n_macs, > return (i == b_n_macs) ? true : false; > } > > +static bool > +parents_equal(const struct sbrec_bindings *binding, > + const struct nbrec_logical_port *lport) > +{ > + if (!!binding->parent_port != !!lport->parent_name) { > + /* One is set and the other is not. */ > + return false; > + } > + > + if (binding->parent_port) { > + /* Both are set. */ > + return strcmp(binding->parent_port, lport->parent_name) ? false : > true; > + } > + > + /* Both are NULL. */ > + return true; > +} > + > +static bool > +tags_equal(const struct sbrec_bindings *binding, > + const struct nbrec_logical_port *lport) > +{ > + if (binding->n_tag != lport->n_tag) { > + return false; > + } > + > + return binding->n_tag ? (binding->tag[0] == lport->tag[0]) : true; > +} > + > /* > * When a change has occurred in the OVN_Northbound database, we go through > and > * make sure that the contents of the Bindings table in the OVN_Southbound > @@ -163,8 +192,7 @@ set_bindings(struct northd_context *ctx) > > if (binding) { > /* We found an existing binding for this logical port. Update its > - * contents. Right now the only thing we expect that could > change > - * is the list of MAC addresses. */ > + * contents. */ > > hmap_remove(&bindings_hmap, &hash_node->node); > free(hash_node); > @@ -175,6 +203,12 @@ set_bindings(struct northd_context *ctx) > sbrec_bindings_set_mac(binding, > (const char **) lport->macs, lport->n_macs); > } > + if (!parents_equal(binding, lport)) { > + sbrec_bindings_set_parent_port(binding, lport->parent_name); > + } > + if (!tags_equal(binding, lport)) { > + sbrec_bindings_set_tag(binding, lport->tag, lport->n_tag); > + } > } else { > /* There is no binding for this logical port, so create one. */ > > @@ -182,6 +216,10 @@ set_bindings(struct northd_context *ctx) > sbrec_bindings_set_logical_port(binding, lport->name); > sbrec_bindings_set_mac(binding, > (const char **) lport->macs, lport->n_macs); > + if (lport->parent_name && lport->n_tag > 0) { > + sbrec_bindings_set_parent_port(binding, lport->parent_name); > + sbrec_bindings_set_tag(binding, lport->tag, lport->n_tag); > + } > } > } > > @@ -377,6 +415,8 @@ main(int argc, char *argv[]) > ovsdb_idl_add_column(ovnsb_idl, &sbrec_bindings_col_logical_port); > ovsdb_idl_add_column(ovnsb_idl, &sbrec_bindings_col_chassis); > ovsdb_idl_add_column(ovnsb_idl, &sbrec_bindings_col_mac); > + ovsdb_idl_add_column(ovnsb_idl, &sbrec_bindings_col_tag); > + ovsdb_idl_add_column(ovnsb_idl, &sbrec_bindings_col_parent_port); > > /* > * The loop here just runs the IDL in a loop waiting for the seqno to > -- > 2.1.0 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev