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

Reply via email to