> > > > I don't testcases for OVN NAT at all - did I miss them ? > How can a feature be committed without testcases ? >
We currently do not have NAT in userspace datapath to test OVN NAT. I think this is the same case with OVN firewall. Both of them are currently dependent on OpenStack testing. We should probably do something about it. > > > > > > > > > > >> > >> > >> > > >> > > >> >> --- > >> >> ovn/controller/ovn-controller.h | 3 ++- > >> >> ovn/controller/patch.c | 23 ++++++++++++++++++++--- > >> >> 2 files changed, 22 insertions(+), 4 deletions(-) > >> >> > >> >> diff --git a/ovn/controller/ovn-controller.h > >> >> b/ovn/controller/ovn-controller.h > >> >> index 6a021a0..8816940 100644 > >> >> --- a/ovn/controller/ovn-controller.h > >> >> +++ b/ovn/controller/ovn-controller.h > >> >> @@ -51,8 +51,9 @@ struct local_datapath *get_local_datapath(const > >> struct > >> >> hmap *, > >> >> * with at least one logical patch port binding. */ > >> >> struct patched_datapath { > >> >> struct hmap_node hmap_node; > >> >> - bool local; /* 'True' if the datapath is for gateway router. */ > >> >> const struct sbrec_port_binding *port_binding; > >> >> + bool local; /* 'True' if the datapath is for gateway router. */ > >> >> + bool stale; > >> >> }; > >> >> > >> >> struct patched_datapath *get_patched_datapath(const struct hmap *, > >> >> diff --git a/ovn/controller/patch.c b/ovn/controller/patch.c > >> >> index 589529e..a701db2 100644 > >> >> --- a/ovn/controller/patch.c > >> >> +++ b/ovn/controller/patch.c > >> >> @@ -252,12 +252,14 @@ static void > >> >> add_patched_datapath(struct hmap *patched_datapaths, > >> >> const struct sbrec_port_binding *binding_rec, > >> bool > >> >> local) > >> >> { > >> >> - if (get_patched_datapath(patched_datapaths, > >> >> - binding_rec->datapath->tunnel_key)) { > >> >> + struct patched_datapath * pd; > >> >> + if (pd = get_patched_datapath(patched_datapaths, > >> >> + > binding_rec->datapath->tunnel_key)) > >> { > >> >> > >> > > >> > Can you move the assignment outside the if condition? > >> > > >> > CodingStyle.md says "Avoid assignments inside "if" and "while" > >> conditions." > >> > > >> > >> > >> alright > >> > >> > >> > >> > > >> > > >> >> + pd->stale = false; > >> >> return; > >> >> } > >> >> > >> >> - struct patched_datapath *pd = xzalloc(sizeof *pd); > >> >> + pd = xzalloc(sizeof *pd); > >> >> pd->local = local; > >> >> pd->port_binding = binding_rec; > >> >> hmap_insert(patched_datapaths, &pd->hmap_node, > >> >> @@ -300,6 +302,13 @@ add_logical_patch_ports(struct controller_ctx > >> *ctx, > >> >> } > >> >> > >> >> const struct sbrec_port_binding *binding; > >> >> + > >> >> + /* Mark all patched datapaths as stale for later cleanup check > */ > >> >> + struct patched_datapath *pd; > >> >> + HMAP_FOR_EACH (pd, hmap_node, patched_datapaths) { > >> >> + pd->stale = true; > >> >> + } > >> >> + > >> >> SBREC_PORT_BINDING_FOR_EACH (binding, ctx->ovnsb_idl) { > >> >> bool local_port = false; > >> >> if (!strcmp(binding->type, "gateway")) { > >> >> @@ -332,6 +341,14 @@ add_logical_patch_ports(struct controller_ctx > >> *ctx, > >> >> } > >> >> } > >> >> } > >> >> + /* Clean up stale patched datapaths. */ > >> >> + struct patched_datapath *pd_cur_node, *pd_next_node; > >> >> + HMAP_FOR_EACH_SAFE (pd_cur_node, pd_next_node, hmap_node, > >> >> patched_datapaths) { > >> >> + if (pd_cur_node->stale == true) { > >> >> + hmap_remove(patched_datapaths, &pd_cur_node->hmap_node); > >> >> + free(pd_cur_node); > >> >> + } > >> >> + } > >> >> } > >> >> > >> >> void > >> >> -- > >> >> 1.9.1 > >> >> > >> >> _______________________________________________ > >> >> dev mailing list > >> >> dev@openvswitch.org > >> >> http://openvswitch.org/mailman/listinfo/dev > >> >> > >> > > >> > > >> > > >> > -- > >> > Russell Bryant > >> > > >> _______________________________________________ > >> dev mailing list > >> dev@openvswitch.org > >> http://openvswitch.org/mailman/listinfo/dev > >> > > > > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev