Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SONiC Yang model for DHCP-Relay parameters #8946

Merged
merged 9 commits into from
Nov 4, 2021
1 change: 1 addition & 0 deletions src/sonic-yang-models/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
'./yang-models/sonic-crm.yang',
'./yang-models/sonic-device_metadata.yang',
'./yang-models/sonic-device_neighbor.yang',
'./yang-models/sonic-dhcpv6-relay.yang',
'./yang-models/sonic-extension.yang',
'./yang-models/sonic-flex_counter.yang',
'./yang-models/sonic-feature.yang',
Expand Down
21 changes: 20 additions & 1 deletion src/sonic-yang-models/tests/files/sample_config_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,9 @@
"dhcp_servers": [
"10.222.72.116"
],
"dhcpv6_servers": [
"2a04:5555:41::11"
],
"vlanid": "111",
"mtu": "9216",
"admin_status": "up"
Expand All @@ -229,6 +232,9 @@
"dhcp_servers": [
"10.222.72.116"
],
"dhcpv6_servers": [
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We currently store dhcpv6_servers in a separate table called DHCP_RELAY, and SONiC dhcp6relay fetches dhcpv6 server addresses from this table instead of VLAN. This is the draft sonic-dhcpv6-relay.yang

module DHCP_RELAY  
    container DHCP_RELAY {  	
        list VLAN_LIST {
    		key name;
   		    leaf name {
    			type string;
  		    }
   		    leaf dhcpv6_servers {
     		    	type inet6:ip-address;
  		    }
		    leaf dhcpv6_option|rfc6939_support {
			    type bool;
		    }
        }
    }
}

And config_db schema looks like this:

DHCP_RELAY|intf-i|dhcpv6_servers: ["dhcp-server-0", "dhcp-server-1", ...., "dhcp-server-n-1"]
DHCP_RELAY|intf-i|dhcpv6_option|rfc6939_support: "true"

202106 version currently still uses ISC-DHCP which reads from VLAN table, so we need to have dhcpv6_servers in both VLAN and DHCP_RELAY

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a new 'dhcpv6-relay' yang file changes for DHCP_RELAY table.

@kellyyeh Seeing parsing issues with leaf "dhcpv6_option|rfc6939_support", as it has '|' character.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add it as just "rfc6939_support" please?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, added leaf as 'rfc6939_support'.

"2a04:5555:41::11"
],
"vlanid": "777",
"mtu": "9216",
"admin_status": "up"
Expand Down Expand Up @@ -1139,7 +1145,20 @@
"state": "enabled"
}
},

"DHCP_RELAY": {
"Vlan111": {
"dhcpv6_servers": [
"2a04:5555:41::11"
],
"rfc6939_support": "true"
},
"Vlan777": {
"dhcpv6_servers": [
"2a04:5555:41::11"
],
"rfc6939_support": "true"
}
},
"SCHEDULER": {
"TEST@0": {
"cbs": "256",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"DHCPV6_SERVER_INCORRECT_FORMAT": {
"desc": "Add dhcpv6_server which is not in correct ipv6-address format.",
"eStrKey" : "Pattern"
},
"DHCPV6_SERVER_VALID_FORMAT": {
"desc": "Add dhcpv6_server in correct format."
}
}
10 changes: 10 additions & 0 deletions src/sonic-yang-models/tests/yang_model_tests/tests/vlan.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
"eStrKey" : "InvalidValue",
"eStr": ["dhcp_servers"]
},
"DHCPV6_SERVER_INCORRECT_FORMAT": {
"desc": "Add dhcpv6_server which is not in correct ipv6-address format.",
"eStrKey" : "Pattern"
},
"VLAN_WITH_NON_EXIST_PORT": {
"desc": "Configure a member port in VLAN_MEMBER table which does not exist.",
"eStrKey" : "InvalidValue"
Expand All @@ -43,5 +47,11 @@
},
"VLAN_INTERFACE_VALID_NAT_ZONE_RANGE": {
"desc": "Configure valid value for nat zone."
},
"DHCP_SERVER_VALID_FORMAT": {
"desc": "Add dhcp_server in correct format."
},
"DHCPV6_SERVER_VALID_FORMAT": {
"desc": "Add dhcpv6_server in correct format."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
"DHCPV6_SERVER_INCORRECT_FORMAT": {
"sonic-dhcpv6-relay:sonic-dhcpv6-relay": {
"sonic-dhcpv6-relay:DHCP_RELAY": {
"DHCP_RELAY_LIST": [
{
"dhcpv6_servers": [
"2001:1:2"
],
"name": "Vlan500"
}
]
}
}
},
"DHCPV6_SERVER_VALID_FORMAT": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {
"PORT_LIST": [
{
"admin_status": "up",
"alias": "eth0",
"description": "Ethernet0",
"mtu": 9000,
"lanes": "1",
"name": "Ethernet0",
"speed": 25000
}
]
}
},
"sonic-vlan:sonic-vlan": {
"sonic-vlan:VLAN": {
"VLAN_LIST": [
{
"admin_status": "up",
"description": "v6server_vlan",
"dhcpv6_servers": [
"2001:1::2"
],
"mtu": "9216",
"name": "Vlan400"
}
]
},
"sonic-vlan:VLAN_MEMBER": {
"VLAN_MEMBER_LIST": [
{
"port": "Ethernet0",
"tagging_mode": "tagged",
"name": "Vlan400"
}
]
},
"sonic-vlan:VLAN_INTERFACE": {
"VLAN_INTERFACE_IPPREFIX_LIST": [
{
"family": "IPv6",
"ip-prefix": "2002::1/64",
"scope": "global",
"name": "Vlan400"
}
],
"VLAN_INTERFACE_LIST": [
{
"name": "Vlan400"
}
]
}
},
"sonic-dhcpv6-relay:sonic-dhcpv6-relay": {
"sonic-dhcpv6-relay:DHCP_RELAY": {
"DHCP_RELAY_LIST": [
{
"dhcpv6_servers": [
"2001:1::2"
],
"rfc6939_support": "true",

"name": "Vlan400"
}
]
}
}
}
}
129 changes: 129 additions & 0 deletions src/sonic-yang-models/tests/yang_model_tests/tests_config/vlan.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,23 @@
}
}
},
"DHCPV6_SERVER_INCORRECT_FORMAT": {
"sonic-vlan:sonic-vlan": {
"sonic-vlan:VLAN": {
"VLAN_LIST": [
{
"admin_status": "up",
"description": "v6server_vlan",
"dhcpv6_servers": [
"2001:1:2"
],
"mtu": "9216",
"name": "Vlan500"
}
]
}
}
},
"TAGGING_MODE_WRONG_VALUE": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {
Expand Down Expand Up @@ -367,5 +384,117 @@
]
}
}
},
"DHCP_SERVER_VALID_FORMAT": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {
"PORT_LIST": [
{
"admin_status": "up",
"alias": "eth0",
"description": "Ethernet0",
"mtu": 9000,
"lanes": "1",
"name": "Ethernet0",
"speed": 25000
}
]
}
},
"sonic-vlan:sonic-vlan": {
"sonic-vlan:VLAN": {
"VLAN_LIST": [
{
"admin_status": "up",
"description": "server_vlan",
"dhcp_servers": [
"10.186.72.10"
],
"mtu": "9216",
"name": "Vlan300"
}
]
},
"sonic-vlan:VLAN_MEMBER": {
"VLAN_MEMBER_LIST": [
{
"port": "Ethernet0",
"tagging_mode": "tagged",
"name": "Vlan300"
}
]
},
"sonic-vlan:VLAN_INTERFACE": {
"VLAN_INTERFACE_IPPREFIX_LIST": [
{
"family": "IPv4",
"ip-prefix": "20.0.0.1/24",
"scope": "global",
"name": "Vlan300"
}
],
"VLAN_INTERFACE_LIST": [
{
"name": "Vlan300"
}
]
}
}
},
"DHCPV6_SERVER_VALID_FORMAT": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {
"PORT_LIST": [
{
"admin_status": "up",
"alias": "eth0",
"description": "Ethernet0",
"mtu": 9000,
"lanes": "1",
"name": "Ethernet0",
"speed": 25000
}
]
}
},
"sonic-vlan:sonic-vlan": {
"sonic-vlan:VLAN": {
"VLAN_LIST": [
{
"admin_status": "up",
"description": "v6server_vlan",
"dhcpv6_servers": [
"2001:1::2"
],
"mtu": "9216",
"name": "Vlan400"
}
]
},
"sonic-vlan:VLAN_MEMBER": {
"VLAN_MEMBER_LIST": [
{
"port": "Ethernet0",
"tagging_mode": "tagged",
"name": "Vlan400"
}
]
},
"sonic-vlan:VLAN_INTERFACE": {
"VLAN_INTERFACE_IPPREFIX_LIST": [
{
"family": "IPv6",
"ip-prefix": "2002::1/64",
"scope": "global",
"name": "Vlan400"
}
],
"VLAN_INTERFACE_LIST": [
{
"name": "Vlan400"
}
]
}
}
}
}
53 changes: 53 additions & 0 deletions src/sonic-yang-models/yang-models/sonic-dhcpv6-relay.yang
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
module sonic-dhcpv6-relay {

namespace "http://github.com/Azure/sonic-dhcpv6-relay";

prefix sdhcpv6relay;

yang-version 1.1;

import ietf-inet-types {
prefix inet;
}

organization "SONiC";

contact "SONiC";

description "DHCPv6 Relay yang Module for SONiC OS";

revision 2021-10-30 {
description "First Revision";
}

container sonic-dhcpv6-relay {

container DHCP_RELAY {

description "DHCP_RELAY part of config_db.json";

list DHCP_RELAY_LIST {

key "name";

leaf name {
type string;
}

leaf-list dhcpv6_servers {
description "Configure the dhcp v6 servers";
type inet:ipv6-address;
}

leaf rfc6939_support {
description "Set rfc6939 for the relay";
type boolean;
}
}
/* end of VLAN_LIST */
}
/* end of container DHCP_RELAY */
}
/* end of container sonic-dhcpv6-relay */
}
/* end of module sonic-dhcpv6-relay */
6 changes: 6 additions & 0 deletions src/sonic-yang-models/yang-models/sonic-vlan.yang
Original file line number Diff line number Diff line change
Expand Up @@ -164,9 +164,15 @@ module sonic-vlan {
}

leaf-list dhcp_servers {
description "Configure the dhcp v4 servers";
type inet:ip-address;
}

leaf-list dhcpv6_servers {
description "Configure the dhcp v6 servers";
type inet:ipv6-address;
}

leaf mtu {
type uint16 {
range 1..9216;
Expand Down