On Fri, Jun 10, 2016 at 3:34 AM, FlaviofOvsML <o...@flaviof.com> wrote:
> > > On Tue, Jun 7, 2016 at 1:49 AM, Numan Siddique <nusid...@redhat.com> > wrote: > >> OVN implements a native DHCP support which caters to the common >> use case of providing an IP address to a booting instance by >> providing stateless replies to DHCP requests based on statically >> configured address mappings. To do this it allows a short list of >> DHCP options to be configured and applied at each compute host >> running ovn-controller. >> >> A new table 'Subnet' is added in OVN NB DB to store the DHCP options. >> >> For each logical port following flows are added if the CMS has defined >> DHCP options in the 'Subnet' column >> >> - A logical flow which copies the DHCP options to the DHCP >> request packets using the 'put_dhcp_opts' action and advances the >> packet to the next stage. >> >> - A logical flow which implements the DHCP reponder by sending >> the DHCP reply back to the inport once the 'put_dhcp_opts' action >> is applied. >> >> Signed-Off-by: Numan Siddique <nusid...@redhat.com> >> --- >> ovn/northd/ovn-northd.8.xml | 89 +++++++++++- >> ovn/northd/ovn-northd.c | 265 ++++++++++++++++++++++++++++++++++- >> ovn/ovn-nb.ovsschema | 19 ++- >> ovn/ovn-nb.xml | 314 >> +++++++++++++++++++++++++++++++++++++++++- >> ovn/utilities/ovn-nbctl.8.xml | 29 ++++ >> ovn/utilities/ovn-nbctl.c | 196 ++++++++++++++++++++++++++ >> tests/ovn.at | 250 +++++++++++++++++++++++++++++++++ >> tests/test-ovn-dhcp.c | 135 ++++++++++++++++++ >> 8 files changed, 1287 insertions(+), 10 deletions(-) >> >> > Hi Numan, > > I see that this version is beind superseded... but may I point out a > feedback > on something that looks missing. > > <snip> > > > >> diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c >> > index cac0148..325fbc0 100644 >> --- a/ovn/northd/ovn-northd.c >> +++ b/ovn/northd/ovn-northd.c >> >> > <snip> > > >> static void >> build_acls(struct ovn_datapath *od, struct hmap *lflows, struct hmap >> *ports) >> { >> @@ -1475,6 +1555,36 @@ build_acls(struct ovn_datapath *od, struct hmap >> *lflows, struct hmap *ports) >> acl->match, "drop;"); >> } >> } >> + >> + /* Add 34000 priority flow to allow DHCP reply from ovn-controller >> to all >> + * logical ports of the datapath if the CMS has configured DHCP >> options*/ >> + if (od->nbs && od->nbs->n_ports && od->nbs->n_subnets) { >> + for (size_t i = 0; i < od->nbs->n_subnets; i++) { >> + if (!(od->nbs->subnets[i]->gateway_ip && >> + od->nbs->subnets[i]->enable_dhcp && >> + od->nbs->subnets[i]->ip_version == 4)) { >> + continue; >> + } >> + >> + const char *server_id = smap_get( >> + &od->nbs->subnets[i]->dhcp_options, "server_id"); >> + const char *server_mac = smap_get( >> + &od->nbs->subnets[i]->dhcp_options, "server_mac"); >> + const char *lease_time = smap_get( >> + &od->nbs->subnets[i]->dhcp_options, "lease_time"); >> + if (server_id && server_mac && lease_time) { >> + struct ds match = DS_EMPTY_INITIALIZER; >> + const char *actions = has_stateful ? "ct_commit; next;" >> : >> + "next;"; >> + ds_put_format(&match, "eth.src == %s && ip4.src == %s >> &&" >> + " udp && udp.src == 67 && udp.dst == 68", >> + server_mac, server_id); >> + ovn_lflow_add( >> + lflows, od, S_SWITCH_OUT_ACL, 34000, >> ds_cstr(&match), >> + actions); >> > > ds_destroy(&match); <== missing that, right? > Ack. It is missing. Thanks for finding it out. > > >> + } >> + } >> + } >> } >> >> > <snip> > > -- flaviof > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev