On Sep 26, 2014, at 2:39 AM, Xu Han Peng <[email protected]> wrote:

> Currently the extra_dhcp_opts has the following API interface on a port:
> 
> {
>     "port":
>     {
>         "extra_dhcp_opts": [
>             {"opt_value": "testfile.1","opt_name": "bootfile-name"},
>             {"opt_value": "123.123.123.123", "opt_name": "tftp-server"},
>             {"opt_value": "123.123.123.45", "opt_name": "server-ip-address"}
>         ],
>         ....
>      }
> }
> 
> During the development of DHCPv6 function for IPv6 subnets, we found this 
> format doesn't work anymore because an port can have both IPv4 and IPv6 
> address. So we need to find a new way to specify extra_dhcp_opts for DHCPv4 
> and DHCPv6, respectively. ( https://bugs.launchpad.net/neutron/+bug/1356383)
> 
> Here are some thoughts about the new format:
> 
> Option1: Change the opt_name in extra_dhcp_opts to add a prefix (v4 or v6) so 
> we can distinguish opts for v4 or v6 by parsing the opt_name. For backward 
> compatibility, no prefix means IPv4 dhcp opt. 
> 
>         "extra_dhcp_opts": [
>             {"opt_value": "testfile.1","opt_name": "bootfile-name"},
>             {"opt_value": "123.123.123.123", "opt_name": "v4:tftp-server"},
>             {"opt_value": "[2001:0200:feed:7ac0::1]", "opt_name": 
> "v6:dns-server"}
>         ]
> 
> Option2: break extra_dhcp_opts into IPv4 opts and IPv6 opts. For backward 
> compatibility, both old format and new format are acceptable, but old format 
> means IPv4 dhcp opts. 
> 
>         "extra_dhcp_opts": {
>              "ipv4": [
>                     {"opt_value": "testfile.1","opt_name": "bootfile-name"},
>                     {"opt_value": "123.123.123.123", "opt_name": 
> "tftp-server"},
>              ],
>              "ipv6": [
>                     {"opt_value": "[2001:0200:feed:7ac0::1]", "opt_name": 
> "dns-server"}
>              ]
>         }
> 
> The pro of Option1 is there is no need to change API structure but only need 
> to add validation and parsing to opt_name. The con of Option1 is that user 
> need to input prefix for every opt_name which can be error prone. The pro of 
> Option2 is that it's clearer than Option1. The con is that we need to check 
> two formats for backward compatibility. 
> 
> We discussed this in IPv6 sub-team meeting and we think Option2 is preferred. 
> Can I also get community's feedback on which one is preferred or any other 
> comments?
> 

I’m -1 for both options because neither is properly backwards compatible.  
Instead we should add an optional 3rd value to the dictionary: “version”.  The 
version key would be used to make the option only apply to either version 4 or 
6.  If the key is missing or null, then the option would apply to both. 

mark

_______________________________________________
OpenStack-dev mailing list
[email protected]
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to