On Tue, Jun 15, 2021 at 10:30 AM Vladislav Odintsov <odiv...@gmail.com> wrote: > > Glad to hear that. > > I’ve sent a new patch version: > https://patchwork.ozlabs.org/project/ovn/patch/20210615142405.20140-1-odiv...@gmail.com/ > BTW, is there any other way to update patch except posting a complete new > patch to patchwork with vN version prefix? Sorry if it’s a stupid question, > I’m new to mail list patches submission :) How can I close previous patch > versions in patchwork?
You can create a new account in patchwork and move the state of your old patch to either "Superseded" or "changes requested". Please take a look at the present queue - https://patchwork.ozlabs.org/project/ovn/list/? Thanks Numan > > Regards, > Vladislav Odintsov > > > On 15 Jun 2021, at 15:35, Numan Siddique <num...@ovn.org> wrote: > > > > On Tue, Jun 15, 2021 at 5:00 AM Vladislav Odintsov <odiv...@gmail.com> > > wrote: > >> > >> Hi Numan, > >> > >> Thanks for review. > >> > >> I’ve been thinking about such approach to set hostnames via DHCP_Options. > >> In my opinion it can be an overkill to have a special DHCP_Options record > >> per each logical switch port in case where we want to return hostnames in > >> DHCP Reply. I understand hostname as a special per-LSP specific DHCP > >> option (maybe even mostly unique for project/tenant). So in such behaviour > >> where hostname is in DHCP_Options instead of LSP, if one wants to return > >> hostnames in DHCP, he/she would always have many DHCP_Options records with > >> same content which differs only in one: hostname. > >> > >> For CMS to manage reduced count of DHCP_Options (comparing to per-LSP > >> DHCP_Options records) looks better too. I don’t have statistics about > >> common DHCP usage pattern in OVN, but in our deployment we have one > >> DHCP_Options record for each L3 subnet. Updating DHCP settings for this > >> subnet is very comfortable just modifying options in one associated > >> record. And if we want just to add hostnames to this scheme, right away we > >> have to maintain separate DHCP_Options record for each LSP and each time > >> we want to update, for instance domain_name, we have to rewrite tens of > >> DHCP_Options records, which differ only in hostnames. > > > > Ok. I do understand that managing all the dhcp rows by CMS could be > > challenging. If the requirement is to set the hostname for each of > > the VMs, then I'm fine with your approach. > > > > Can you please also update the documentation in ovn-nb.xml in tthe > > DHCP_Options table section ? > > > > Thanks > > Numan > > > >> > >> Let me know your thoughts on this, please. > >> > >> Regards, > >> Vladislav Odintsov > >> > >>> On 14 Jun 2021, at 21:29, Numan Siddique <num...@ovn.org> wrote: > >>> > >>> On Fri, May 28, 2021 at 7:32 AM Vladislav Odintsov <odiv...@gmail.com > >>> <mailto:odiv...@gmail.com>> wrote: > >>>> > >>>> DHCP Option Hostname is a per-Logical_Switch_Port property, configured in > >>>> Logical_Switch_Port's options:hostname field. It is used if DHCPv4 is > >>>> enabled for this LSP. > >>>> > >>>> Signed-off-by: Vladislav Odintsov <odiv...@gmail.com > >>>> <mailto:odiv...@gmail.com>> > >>> > >>> Thanks for the patch. Each Logical switch port has a column - > >>> dhcp_options. > >>> > >>> Openstack neutron when using the native OVN DHCP feature creates a > >>> dhcp_options row > >>> in the DHCP_option table and associates this with the logical ports. > >>> In case if there are > >>> neutron port specific dhcp options which need to be overridden, > >>> neutron creates an additional row in DHCP_Options table and > >>> associates that row to the specific logical port. I think the same > >>> can be done here instead of setting the hostname in the options > >>> of logical switch port. > >>> > >>> Can you also please update the documentation in ovn-nb.xml about the > >>> new supported option in the DHCP_Options table section. > >>> > >>> Thanks > >>> Numan > >>> > >>> > >>> > >>> > >>> > >>>> --- > >>>> The implementation for ovn-northd-ddlog is absent, it needs help from > >>>> somebody, who's familiar with ddlog. > >>>> > >>>> lib/ovn-l7.h | 1 + > >>>> northd/ovn-northd.c | 9 +++++++++ > >>>> ovn-nb.xml | 9 +++++++++ > >>>> tests/ovn.at | 3 +++ > >>>> tests/test-ovn.c | 1 + > >>>> 5 files changed, 23 insertions(+) > >>>> > >>>> diff --git a/lib/ovn-l7.h b/lib/ovn-l7.h > >>>> index 5e33d619c..9a33f5cda 100644 > >>>> --- a/lib/ovn-l7.h > >>>> +++ b/lib/ovn-l7.h > >>>> @@ -81,6 +81,7 @@ struct gen_opts_map { > >>>> #define DHCP_OPT_DNS_SERVER DHCP_OPTION("dns_server", 6, "ipv4") > >>>> #define DHCP_OPT_LOG_SERVER DHCP_OPTION("log_server", 7, "ipv4") > >>>> #define DHCP_OPT_LPR_SERVER DHCP_OPTION("lpr_server", 9, "ipv4") > >>>> +#define DHCP_OPT_HOSTNAME DHCP_OPTION("hostname", 12, "str") > >>>> #define DHCP_OPT_DOMAIN_NAME DHCP_OPTION("domain_name", 15, "str") > >>>> #define DHCP_OPT_SWAP_SERVER DHCP_OPTION("swap_server", 16, "ipv4") > >>>> > >>>> diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c > >>>> index c39d451ec..e43c6d91a 100644 > >>>> --- a/northd/ovn-northd.c > >>>> +++ b/northd/ovn-northd.c > >>>> @@ -4574,6 +4574,14 @@ build_dhcpv4_action(struct ovn_port *op, ovs_be32 > >>>> offer_ip, > >>>> REGBIT_DHCP_OPTS_RESULT" = put_dhcp_opts(offerip = " > >>>> IP_FMT", ", IP_ARGS(offer_ip)); > >>>> > >>>> + /* hostname is a per Logical_Switch_Port dhcp option, > >>>> + * so try to get it from ovn_port and put it to options_action > >>>> + * if it exists. */ > >>>> + const char *hostname = smap_get(&op->nbsp->options, "hostname"); > >>>> + if (hostname) { > >>>> + ds_put_format(options_action, "%s = %s, ", "hostname", > >>>> hostname); > >>>> + } > >>>> + > >>>> /* We're not using SMAP_FOR_EACH because we want a consistent order > >>>> of the > >>>> * options on different architectures (big or little endian, SSE4.2) > >>>> */ > >>>> const struct smap_node **sorted_opts = smap_sort(&dhcpv4_options); > >>>> @@ -13561,6 +13569,7 @@ static struct gen_opts_map supported_dhcp_opts[] > >>>> = { > >>>> DHCP_OPT_BOOTFILE, > >>>> DHCP_OPT_PATH_PREFIX, > >>>> DHCP_OPT_TFTP_SERVER_ADDRESS, > >>>> + DHCP_OPT_HOSTNAME, > >>>> DHCP_OPT_DOMAIN_NAME, > >>>> DHCP_OPT_ARP_CACHE_TIMEOUT, > >>>> DHCP_OPT_TCP_KEEPALIVE_INTERVAL, > >>>> diff --git a/ovn-nb.xml b/ovn-nb.xml > >>>> index cf1e3aac4..404b15608 100644 > >>>> --- a/ovn-nb.xml > >>>> +++ b/ovn-nb.xml > >>>> @@ -929,6 +929,15 @@ > >>>> If set, indicates the maximum burst size for data sent from this > >>>> interface, in bits. > >>>> </column> > >>>> + > >>>> + <column name="options" key="hostname"> > >>>> + <p> > >>>> + If set, indicates the DHCPv4 option "Hostname" (option code > >>>> 12) > >>>> + associated for this Logical Switch Port. If DHCPv4 is > >>>> enabled for > >>>> + this Logical Switch Port, hostname dhcp option will be > >>>> included in > >>>> + DHCP reply. > >>>> + </p> > >>>> + </column> > >>>> </group> > >>>> > >>>> <group title="Virtual port Options"> > >>>> diff --git a/tests/ovn.at b/tests/ovn.at > >>>> index 71d2bab4d..757e15972 100644 > >>>> --- a/tests/ovn.at > >>>> +++ b/tests/ovn.at > >>>> @@ -1345,6 +1345,9 @@ reg2[5] = > >>>> put_dhcp_opts(offerip=10.0.0.4,router=10.0.0.1,netmask=255.255.254.0,m > >>>> reg2[5] = > >>>> put_dhcp_opts(offerip=10.0.0.4,router=10.0.0.1,netmask=255.255.254.0,mtu=1400,domain_name="ovn.org",wpad="https://example.org",bootfile_name="https://127.0.0.1/boot.ipxe",path_prefix="/tftpboot",domain_search_list="ovn.org,abc.ovn.org,def.ovn.org,ovn.test,def.ovn.test,test.org,abc.com"); > >>>> formats as reg2[5] = put_dhcp_opts(offerip = 10.0.0.4, router = > >>>> 10.0.0.1, netmask = 255.255.254.0, mtu = 1400, domain_name = "ovn.org", > >>>> wpad = "https://example.org", bootfile_name = > >>>> "https://127.0.0.1/boot.ipxe", path_prefix = "/tftpboot", > >>>> domain_search_list = > >>>> "ovn.org,abc.ovn.org,def.ovn.org,ovn.test,def.ovn.test,test.org,abc.com"); > >>>> encodes as > >>>> controller(userdata=00.00.00.02.00.00.00.00.00.01.de.10.00.00.00.25.0a.00.00.04.43.1b.68.74.74.70.73.3a.2f.2f.31.32.37.2e.30.2e.30.2e.31.2f.62.6f.6f.74.2e.69.70.78.65.03.04.0a.00.00.01.01.04.ff.ff.fe.00.1a.02.05.78.0f.07.6f.76.6e.2e.6f.72.67.fc.13.68.74.74.70.73.3a.2f.2f.65.78.61.6d.70.6c.65.2e.6f.72.67.d2.09.2f.74.66.74.70.62.6f.6f.74.77.35.03.6f.76.6e.03.6f.72.67.00.03.61.62.63.c0.00.03.64.65.66.c0.00.03.6f.76.6e.04.74.65.73.74.00.03.64.65.66.c0.15.04.74.65.73.74.c0.04.03.61.62.63.03.63.6f.6d.00,pause) > >>>> +reg2[5] = > >>>> put_dhcp_opts(offerip=10.0.0.4,router=10.0.0.1,netmask=255.255.254.0,mtu=1400,domain_name="ovn.org",hostname="ip-10-0-0-4"); > >>>> + formats as reg2[5] = put_dhcp_opts(offerip = 10.0.0.4, router = > >>>> 10.0.0.1, netmask = 255.255.254.0, mtu = 1400, domain_name = "ovn.org", > >>>> hostname = "ip-10-0-0-4"); > >>>> + encodes as > >>>> controller(userdata=00.00.00.02.00.00.00.00.00.01.de.10.00.00.00.25.0a.00.00.04.03.04.0a.00.00.01.01.04.ff.ff.fe.00.1a.02.05.78.0f.07.6f.76.6e.2e.6f.72.67.0c.0b.69.70.2d.31.30.2d.30.2d.30.2d.34,pause) > >>>> > >>>> reg1[0..1] = put_dhcp_opts(offerip = 1.2.3.4, router = 10.0.0.1); > >>>> Cannot use 2-bit field reg1[0..1] where 1-bit field is required. > >>>> diff --git a/tests/test-ovn.c b/tests/test-ovn.c > >>>> index 98cc2c503..a4701b4cb 100644 > >>>> --- a/tests/test-ovn.c > >>>> +++ b/tests/test-ovn.c > >>>> @@ -168,6 +168,7 @@ create_gen_opts(struct hmap *dhcp_opts, struct hmap > >>>> *dhcpv6_opts, > >>>> dhcp_opt_add(dhcp_opts, "dns_server", 6, "ipv4"); > >>>> dhcp_opt_add(dhcp_opts, "log_server", 7, "ipv4"); > >>>> dhcp_opt_add(dhcp_opts, "lpr_server", 9, "ipv4"); > >>>> + dhcp_opt_add(dhcp_opts, "hostname", 12, "str"); > >>>> dhcp_opt_add(dhcp_opts, "domain_name", 15, "str"); > >>>> dhcp_opt_add(dhcp_opts, "swap_server", 16, "ipv4"); > >>>> dhcp_opt_add(dhcp_opts, "policy_filter", 21, "ipv4"); > >>>> -- > >>>> 2.30.0 > >>>> > >>>> _______________________________________________ > >>>> dev mailing list > >>>> d...@openvswitch.org <mailto:d...@openvswitch.org> > >>>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev > >>>> <https://mail.openvswitch.org/mailman/listinfo/ovs-dev> > >>>> > >>> _______________________________________________ > >>> dev mailing list > >>> d...@openvswitch.org <mailto:d...@openvswitch.org> > >>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev > >>> <https://mail.openvswitch.org/mailman/listinfo/ovs-dev> > >> _______________________________________________ > >> dev mailing list > >> d...@openvswitch.org > >> https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev