From 50df652c26c7e95428ff80efb0bc432f963ff86d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=A5=96=E5=BB=BA?= Date: Thu, 23 Feb 2023 16:48:10 +0800 Subject: [PATCH] update ovnnb model (#2371) --- pkg/ovsdb/ovnnb/acl.go | 6 +- pkg/ovsdb/ovnnb/bfd.go | 2 +- pkg/ovsdb/ovnnb/chassis_template_var.go | 14 + pkg/ovsdb/ovnnb/load_balancer.go | 8 +- .../ovnnb/logical_router_static_route.go | 2 +- pkg/ovsdb/ovnnb/logical_switch_port.go | 1 + pkg/ovsdb/ovnnb/mirror.go | 29 ++ pkg/ovsdb/ovnnb/model.go | 342 ++++++++++++++---- pkg/ovsdb/ovnnb/nat.go | 3 +- pkg/ovsdb/ovnnb/qos.go | 2 +- pkg/ovsdb/ovnnb/static_mac_binding.go | 15 + 11 files changed, 341 insertions(+), 83 deletions(-) create mode 100644 pkg/ovsdb/ovnnb/chassis_template_var.go create mode 100644 pkg/ovsdb/ovnnb/mirror.go create mode 100644 pkg/ovsdb/ovnnb/static_mac_binding.go diff --git a/pkg/ovsdb/ovnnb/acl.go b/pkg/ovsdb/ovnnb/acl.go index b4608afca34..bdc8d79b5ea 100644 --- a/pkg/ovsdb/ovnnb/acl.go +++ b/pkg/ovsdb/ovnnb/acl.go @@ -20,10 +20,10 @@ var ( ACLDirectionFromLport ACLDirection = "from-lport" ACLDirectionToLport ACLDirection = "to-lport" ACLSeverityAlert ACLSeverity = "alert" - ACLSeverityDebug ACLSeverity = "debug" - ACLSeverityInfo ACLSeverity = "info" - ACLSeverityNotice ACLSeverity = "notice" ACLSeverityWarning ACLSeverity = "warning" + ACLSeverityNotice ACLSeverity = "notice" + ACLSeverityInfo ACLSeverity = "info" + ACLSeverityDebug ACLSeverity = "debug" ) // ACL defines an object in ACL table diff --git a/pkg/ovsdb/ovnnb/bfd.go b/pkg/ovsdb/ovnnb/bfd.go index 747d830b7d3..0af2e7f0dc5 100644 --- a/pkg/ovsdb/ovnnb/bfd.go +++ b/pkg/ovsdb/ovnnb/bfd.go @@ -10,10 +10,10 @@ type ( ) var ( - BFDStatusAdminDown BFDStatus = "admin_down" BFDStatusDown BFDStatus = "down" BFDStatusInit BFDStatus = "init" BFDStatusUp BFDStatus = "up" + BFDStatusAdminDown BFDStatus = "admin_down" ) // BFD defines an object in BFD table diff --git a/pkg/ovsdb/ovnnb/chassis_template_var.go b/pkg/ovsdb/ovnnb/chassis_template_var.go new file mode 100644 index 00000000000..aee6b5c072d --- /dev/null +++ b/pkg/ovsdb/ovnnb/chassis_template_var.go @@ -0,0 +1,14 @@ +// Code generated by "libovsdb.modelgen" +// DO NOT EDIT. + +package ovnnb + +const ChassisTemplateVarTable = "Chassis_Template_Var" + +// ChassisTemplateVar defines an object in Chassis_Template_Var table +type ChassisTemplateVar struct { + UUID string `ovsdb:"_uuid"` + Chassis string `ovsdb:"chassis"` + ExternalIDs map[string]string `ovsdb:"external_ids"` + Variables map[string]string `ovsdb:"variables"` +} diff --git a/pkg/ovsdb/ovnnb/load_balancer.go b/pkg/ovsdb/ovnnb/load_balancer.go index 52f8ea01a4e..e1274eba409 100644 --- a/pkg/ovsdb/ovnnb/load_balancer.go +++ b/pkg/ovsdb/ovnnb/load_balancer.go @@ -11,15 +11,15 @@ type ( ) var ( - LoadBalancerProtocolSCTP LoadBalancerProtocol = "sctp" LoadBalancerProtocolTCP LoadBalancerProtocol = "tcp" LoadBalancerProtocolUDP LoadBalancerProtocol = "udp" - LoadBalancerSelectionFieldsEthDst LoadBalancerSelectionFields = "eth_dst" + LoadBalancerProtocolSCTP LoadBalancerProtocol = "sctp" LoadBalancerSelectionFieldsEthSrc LoadBalancerSelectionFields = "eth_src" - LoadBalancerSelectionFieldsIPDst LoadBalancerSelectionFields = "ip_dst" + LoadBalancerSelectionFieldsEthDst LoadBalancerSelectionFields = "eth_dst" LoadBalancerSelectionFieldsIPSrc LoadBalancerSelectionFields = "ip_src" - LoadBalancerSelectionFieldsTpDst LoadBalancerSelectionFields = "tp_dst" + LoadBalancerSelectionFieldsIPDst LoadBalancerSelectionFields = "ip_dst" LoadBalancerSelectionFieldsTpSrc LoadBalancerSelectionFields = "tp_src" + LoadBalancerSelectionFieldsTpDst LoadBalancerSelectionFields = "tp_dst" ) // LoadBalancer defines an object in Load_Balancer table diff --git a/pkg/ovsdb/ovnnb/logical_router_static_route.go b/pkg/ovsdb/ovnnb/logical_router_static_route.go index 476fb72f37e..4e69b10a8d8 100644 --- a/pkg/ovsdb/ovnnb/logical_router_static_route.go +++ b/pkg/ovsdb/ovnnb/logical_router_static_route.go @@ -10,8 +10,8 @@ type ( ) var ( - LogicalRouterStaticRoutePolicyDstIP LogicalRouterStaticRoutePolicy = "dst-ip" LogicalRouterStaticRoutePolicySrcIP LogicalRouterStaticRoutePolicy = "src-ip" + LogicalRouterStaticRoutePolicyDstIP LogicalRouterStaticRoutePolicy = "dst-ip" ) // LogicalRouterStaticRoute defines an object in Logical_Router_Static_Route table diff --git a/pkg/ovsdb/ovnnb/logical_switch_port.go b/pkg/ovsdb/ovnnb/logical_switch_port.go index 1921f43f050..d69b1bf77a8 100644 --- a/pkg/ovsdb/ovnnb/logical_switch_port.go +++ b/pkg/ovsdb/ovnnb/logical_switch_port.go @@ -15,6 +15,7 @@ type LogicalSwitchPort struct { Enabled *bool `ovsdb:"enabled"` ExternalIDs map[string]string `ovsdb:"external_ids"` HaChassisGroup *string `ovsdb:"ha_chassis_group"` + MirrorRules []string `ovsdb:"mirror_rules"` Name string `ovsdb:"name"` Options map[string]string `ovsdb:"options"` ParentName *string `ovsdb:"parent_name"` diff --git a/pkg/ovsdb/ovnnb/mirror.go b/pkg/ovsdb/ovnnb/mirror.go new file mode 100644 index 00000000000..55e48c31436 --- /dev/null +++ b/pkg/ovsdb/ovnnb/mirror.go @@ -0,0 +1,29 @@ +// Code generated by "libovsdb.modelgen" +// DO NOT EDIT. + +package ovnnb + +const MirrorTable = "Mirror" + +type ( + MirrorFilter = string + MirrorType = string +) + +var ( + MirrorFilterFromLport MirrorFilter = "from-lport" + MirrorFilterToLport MirrorFilter = "to-lport" + MirrorTypeGre MirrorType = "gre" + MirrorTypeErspan MirrorType = "erspan" +) + +// Mirror defines an object in Mirror table +type Mirror struct { + UUID string `ovsdb:"_uuid"` + ExternalIDs map[string]string `ovsdb:"external_ids"` + Filter MirrorFilter `ovsdb:"filter"` + Index int `ovsdb:"index"` + Name string `ovsdb:"name"` + Sink string `ovsdb:"sink"` + Type MirrorType `ovsdb:"type"` +} diff --git a/pkg/ovsdb/ovnnb/model.go b/pkg/ovsdb/ovnnb/model.go index 6b555e749fc..f06a0697d11 100644 --- a/pkg/ovsdb/ovnnb/model.go +++ b/pkg/ovsdb/ovnnb/model.go @@ -16,6 +16,7 @@ func FullDatabaseModel() (model.ClientDBModel, error) { "ACL": &ACL{}, "Address_Set": &AddressSet{}, "BFD": &BFD{}, + "Chassis_Template_Var": &ChassisTemplateVar{}, "Connection": &Connection{}, "Copp": &Copp{}, "DHCP_Options": &DHCPOptions{}, @@ -35,17 +36,19 @@ func FullDatabaseModel() (model.ClientDBModel, error) { "Logical_Switch_Port": &LogicalSwitchPort{}, "Meter": &Meter{}, "Meter_Band": &MeterBand{}, + "Mirror": &Mirror{}, "NAT": &NAT{}, "NB_Global": &NBGlobal{}, "Port_Group": &PortGroup{}, "QoS": &QoS{}, "SSL": &SSL{}, + "Static_MAC_Binding": &StaticMACBinding{}, }) } var schema = `{ "name": "OVN_Northbound", - "version": "6.1.0", + "version": "7.0.0", "tables": { "ACL": { "columns": { @@ -112,7 +115,8 @@ var schema = `{ "key": { "type": "string" }, - "min": 0 + "min": 0, + "max": 1 } }, "name": { @@ -122,7 +126,8 @@ var schema = `{ "minLength": 63, "maxLength": 63 }, - "min": 0 + "min": 0, + "max": 1 } }, "options": { @@ -154,14 +159,15 @@ var schema = `{ "set", [ "alert", - "debug", - "info", + "warning", "notice", - "warning" + "info", + "debug" ] ] }, - "min": 0 + "min": 0, + "max": 1 } } } @@ -207,7 +213,8 @@ var schema = `{ "type": "integer", "minInteger": 1 }, - "min": 0 + "min": 0, + "max": 1 } }, "dst_ip": { @@ -233,7 +240,8 @@ var schema = `{ "key": { "type": "integer" }, - "min": 0 + "min": 0, + "max": 1 } }, "min_tx": { @@ -242,7 +250,8 @@ var schema = `{ "type": "integer", "minInteger": 1 }, - "min": 0 + "min": 0, + "max": 1 } }, "options": { @@ -264,14 +273,15 @@ var schema = `{ "enum": [ "set", [ - "admin_down", "down", "init", - "up" + "up", + "admin_down" ] ] }, - "min": 0 + "min": 0, + "max": 1 } } }, @@ -282,6 +292,42 @@ var schema = `{ ] ] }, + "Chassis_Template_Var": { + "columns": { + "chassis": { + "type": "string" + }, + "external_ids": { + "type": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "min": 0, + "max": "unlimited" + } + }, + "variables": { + "type": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "min": 0, + "max": "unlimited" + } + } + }, + "indexes": [ + [ + "chassis" + ] + ] + }, "Connection": { "columns": { "external_ids": { @@ -301,11 +347,13 @@ var schema = `{ "key": { "type": "integer" }, - "min": 0 + "min": 0, + "max": 1 } }, "is_connected": { - "type": "boolean" + "type": "boolean", + "ephemeral": true }, "max_backoff": { "type": { @@ -313,7 +361,8 @@ var schema = `{ "type": "integer", "minInteger": 1000 }, - "min": 0 + "min": 0, + "max": 1 } }, "other_config": { @@ -338,7 +387,8 @@ var schema = `{ }, "min": 0, "max": "unlimited" - } + }, + "ephemeral": true }, "target": { "type": "string" @@ -452,6 +502,7 @@ var schema = `{ "key": { "type": "string" }, + "min": 1, "max": "unlimited" } }, @@ -575,7 +626,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "HA_Chassis" + "refTable": "HA_Chassis", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -609,7 +661,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "Load_Balancer_Health_Check" + "refTable": "Load_Balancer_Health_Check", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -649,13 +702,14 @@ var schema = `{ "enum": [ "set", [ - "sctp", "tcp", - "udp" + "udp", + "sctp" ] ] }, - "min": 0 + "min": 0, + "max": 1 } }, "selection_fields": { @@ -665,12 +719,12 @@ var schema = `{ "enum": [ "set", [ - "eth_dst", "eth_src", - "ip_dst", + "eth_dst", "ip_src", - "tp_dst", - "tp_src" + "ip_dst", + "tp_src", + "tp_dst" ] ] }, @@ -755,7 +809,8 @@ var schema = `{ "refTable": "Copp", "refType": "weak" }, - "min": 0 + "min": 0, + "max": 1 } }, "enabled": { @@ -763,7 +818,8 @@ var schema = `{ "key": { "type": "boolean" }, - "min": 0 + "min": 0, + "max": 1 } }, "external_ids": { @@ -806,7 +862,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "NAT" + "refTable": "NAT", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -828,7 +885,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "Logical_Router_Policy" + "refTable": "Logical_Router_Policy", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -838,7 +896,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "Logical_Router_Port" + "refTable": "Logical_Router_Port", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -848,7 +907,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "Logical_Router_Static_Route" + "refTable": "Logical_Router_Static_Route", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -893,7 +953,8 @@ var schema = `{ "key": { "type": "string" }, - "min": 0 + "min": 0, + "max": 1 } }, "nexthops": { @@ -935,7 +996,8 @@ var schema = `{ "key": { "type": "boolean" }, - "min": 0 + "min": 0, + "max": 1 } }, "external_ids": { @@ -954,7 +1016,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "Gateway_Chassis" + "refTable": "Gateway_Chassis", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -964,9 +1027,11 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "HA_Chassis_Group" + "refTable": "HA_Chassis_Group", + "refType": "strong" }, - "min": 0 + "min": 0, + "max": 1 } }, "ipv6_prefix": { @@ -1001,6 +1066,7 @@ var schema = `{ "key": { "type": "string" }, + "min": 1, "max": "unlimited" } }, @@ -1021,7 +1087,8 @@ var schema = `{ "key": { "type": "string" }, - "min": 0 + "min": 0, + "max": 1 } } }, @@ -1040,7 +1107,8 @@ var schema = `{ "refTable": "BFD", "refType": "weak" }, - "min": 0 + "min": 0, + "max": 1 } }, "external_ids": { @@ -1078,7 +1146,8 @@ var schema = `{ "key": { "type": "string" }, - "min": 0 + "min": 0, + "max": 1 } }, "policy": { @@ -1088,12 +1157,13 @@ var schema = `{ "enum": [ "set", [ - "dst-ip", - "src-ip" + "src-ip", + "dst-ip" ] ] }, - "min": 0 + "min": 0, + "max": 1 } }, "route_table": { @@ -1107,7 +1177,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "ACL" + "refTable": "ACL", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -1120,7 +1191,8 @@ var schema = `{ "refTable": "Copp", "refType": "weak" }, - "min": 0 + "min": 0, + "max": 1 } }, "dns_records": { @@ -1150,7 +1222,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "Forwarding_Group" + "refTable": "Forwarding_Group", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -1196,7 +1269,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "Logical_Switch_Port" + "refTable": "Logical_Switch_Port", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -1206,7 +1280,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "QoS" + "refTable": "QoS", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -1232,7 +1307,8 @@ var schema = `{ "refTable": "DHCP_Options", "refType": "weak" }, - "min": 0 + "min": 0, + "max": 1 } }, "dhcpv6_options": { @@ -1242,7 +1318,8 @@ var schema = `{ "refTable": "DHCP_Options", "refType": "weak" }, - "min": 0 + "min": 0, + "max": 1 } }, "dynamic_addresses": { @@ -1250,7 +1327,8 @@ var schema = `{ "key": { "type": "string" }, - "min": 0 + "min": 0, + "max": 1 } }, "enabled": { @@ -1258,7 +1336,8 @@ var schema = `{ "key": { "type": "boolean" }, - "min": 0 + "min": 0, + "max": 1 } }, "external_ids": { @@ -1277,9 +1356,22 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "HA_Chassis_Group" + "refTable": "HA_Chassis_Group", + "refType": "strong" + }, + "min": 0, + "max": 1 + } + }, + "mirror_rules": { + "type": { + "key": { + "type": "uuid", + "refTable": "Mirror", + "refType": "weak" }, - "min": 0 + "min": 0, + "max": "unlimited" } }, "name": { @@ -1302,7 +1394,8 @@ var schema = `{ "key": { "type": "string" }, - "min": 0 + "min": 0, + "max": 1 } }, "port_security": { @@ -1321,7 +1414,8 @@ var schema = `{ "minInteger": 1, "maxInteger": 4095 }, - "min": 0 + "min": 0, + "max": 1 } }, "tag_request": { @@ -1331,7 +1425,8 @@ var schema = `{ "minInteger": 0, "maxInteger": 4095 }, - "min": 0 + "min": 0, + "max": 1 } }, "type": { @@ -1342,7 +1437,8 @@ var schema = `{ "key": { "type": "boolean" }, - "min": 0 + "min": 0, + "max": 1 } } }, @@ -1358,8 +1454,10 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "Meter_Band" + "refTable": "Meter_Band", + "refType": "strong" }, + "min": 1, "max": "unlimited" } }, @@ -1380,7 +1478,8 @@ var schema = `{ "key": { "type": "boolean" }, - "min": 0 + "min": 0, + "max": 1 } }, "name": { @@ -1449,24 +1548,86 @@ var schema = `{ } } }, + "Mirror": { + "columns": { + "external_ids": { + "type": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "min": 0, + "max": "unlimited" + } + }, + "filter": { + "type": { + "key": { + "type": "string", + "enum": [ + "set", + [ + "from-lport", + "to-lport" + ] + ] + } + } + }, + "index": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "sink": { + "type": "string" + }, + "type": { + "type": { + "key": { + "type": "string", + "enum": [ + "set", + [ + "gre", + "erspan" + ] + ] + } + } + } + }, + "indexes": [ + [ + "name" + ] + ] + }, "NAT": { "columns": { "allowed_ext_ips": { "type": { "key": { "type": "uuid", - "refTable": "Address_Set" + "refTable": "Address_Set", + "refType": "strong" }, - "min": 0 + "min": 0, + "max": 1 } }, "exempted_ext_ips": { "type": { "key": { "type": "uuid", - "refTable": "Address_Set" + "refTable": "Address_Set", + "refType": "strong" }, - "min": 0 + "min": 0, + "max": 1 } }, "external_ids": { @@ -1489,12 +1650,24 @@ var schema = `{ "key": { "type": "string" }, - "min": 0 + "min": 0, + "max": 1 } }, "external_port_range": { "type": "string" }, + "gateway_port": { + "type": { + "key": { + "type": "uuid", + "refTable": "Logical_Router_Port", + "refType": "weak" + }, + "min": 0, + "max": 1 + } + }, "logical_ip": { "type": "string" }, @@ -1503,7 +1676,8 @@ var schema = `{ "key": { "type": "string" }, - "min": 0 + "min": 0, + "max": 1 } }, "options": { @@ -1526,8 +1700,8 @@ var schema = `{ "set", [ "dnat", - "dnat_and_snat", - "snat" + "snat", + "dnat_and_snat" ] ] } @@ -1601,7 +1775,8 @@ var schema = `{ "type": "uuid", "refTable": "SSL" }, - "min": 0 + "min": 0, + "max": 1 } } } @@ -1612,7 +1787,8 @@ var schema = `{ "type": { "key": { "type": "uuid", - "refTable": "ACL" + "refTable": "ACL", + "refType": "strong" }, "min": 0, "max": "unlimited" @@ -1675,8 +1851,8 @@ var schema = `{ "enum": [ "set", [ - "burst", - "rate" + "rate", + "burst" ] ] }, @@ -1762,6 +1938,28 @@ var schema = `{ "type": "string" } } + }, + "Static_MAC_Binding": { + "columns": { + "ip": { + "type": "string" + }, + "logical_port": { + "type": "string" + }, + "mac": { + "type": "string" + }, + "override_dynamic_mac": { + "type": "boolean" + } + }, + "indexes": [ + [ + "logical_port", + "ip" + ] + ] } } }` diff --git a/pkg/ovsdb/ovnnb/nat.go b/pkg/ovsdb/ovnnb/nat.go index 182ad1a4150..2b3914f6c0c 100644 --- a/pkg/ovsdb/ovnnb/nat.go +++ b/pkg/ovsdb/ovnnb/nat.go @@ -11,8 +11,8 @@ type ( var ( NATTypeDNAT NATType = "dnat" - NATTypeDNATAndSNAT NATType = "dnat_and_snat" NATTypeSNAT NATType = "snat" + NATTypeDNATAndSNAT NATType = "dnat_and_snat" ) // NAT defines an object in NAT table @@ -24,6 +24,7 @@ type NAT struct { ExternalIP string `ovsdb:"external_ip"` ExternalMAC *string `ovsdb:"external_mac"` ExternalPortRange string `ovsdb:"external_port_range"` + GatewayPort *string `ovsdb:"gateway_port"` LogicalIP string `ovsdb:"logical_ip"` LogicalPort *string `ovsdb:"logical_port"` Options map[string]string `ovsdb:"options"` diff --git a/pkg/ovsdb/ovnnb/qos.go b/pkg/ovsdb/ovnnb/qos.go index e4ee16a752d..3e824b06b28 100644 --- a/pkg/ovsdb/ovnnb/qos.go +++ b/pkg/ovsdb/ovnnb/qos.go @@ -13,8 +13,8 @@ type ( var ( QoSActionDSCP QoSAction = "dscp" - QoSBandwidthBurst QoSBandwidth = "burst" QoSBandwidthRate QoSBandwidth = "rate" + QoSBandwidthBurst QoSBandwidth = "burst" QoSDirectionFromLport QoSDirection = "from-lport" QoSDirectionToLport QoSDirection = "to-lport" ) diff --git a/pkg/ovsdb/ovnnb/static_mac_binding.go b/pkg/ovsdb/ovnnb/static_mac_binding.go new file mode 100644 index 00000000000..cccb67bac6e --- /dev/null +++ b/pkg/ovsdb/ovnnb/static_mac_binding.go @@ -0,0 +1,15 @@ +// Code generated by "libovsdb.modelgen" +// DO NOT EDIT. + +package ovnnb + +const StaticMACBindingTable = "Static_MAC_Binding" + +// StaticMACBinding defines an object in Static_MAC_Binding table +type StaticMACBinding struct { + UUID string `ovsdb:"_uuid"` + IP string `ovsdb:"ip"` + LogicalPort string `ovsdb:"logical_port"` + MAC string `ovsdb:"mac"` + OverrideDynamicMAC bool `ovsdb:"override_dynamic_mac"` +}