@@ -14,6 +14,7 @@ Post-v2.10.0
version.
* New support for IPSEC encrypted tunnels between hypervisors.
* ovn-ctl: allow passing user:group ids to the OVN daemons.
+ * IPAM/MACAM: add the capability to dynamically assign just L2 addresses
- DPDK:
* Add option for simple round-robin based Rxq to PMD assignment.
It can be set with pmd-rxq-assign.
@@ -414,6 +414,7 @@ struct ipam_info {
unsigned long *allocated_ipv4s; /* A bitmap of allocated IPv4s */
bool ipv6_prefix_set;
struct in6_addr ipv6_prefix;
+ bool mac_only;
};
/* The 'key' comes from nbs->header_.uuid or nbr->header_.uuid or
@@ -559,6 +560,10 @@ init_ipam_info_for_datapath(struct ovn_datapath *od)
}
if (!subnet_str) {
+ if (!ipv6_prefix) {
+ od->ipam_info.mac_only = smap_get_bool(&od->nbs->other_config,
+ "mac_only", false);
+ }
return;
}
@@ -1382,7 +1387,8 @@ build_ipam(struct hmap *datapaths, struct hmap *ports)
const struct nbrec_logical_switch_port *nbsp = od->nbs->ports[i];
if (!od->ipam_info.allocated_ipv4s &&
- !od->ipam_info.ipv6_prefix_set) {
+ !od->ipam_info.ipv6_prefix_set &&
+ !od->ipam_info.mac_only) {
if (nbsp->dynamic_addresses) {
nbrec_logical_switch_port_set_dynamic_addresses(nbsp,
NULL);
@@ -267,6 +267,11 @@
<li><code>8230:5678::</code></li>
</ul>
</column>
+
+ <column name="other_config" key="mac_only" type='{"type": "boolean"}'>
+ Value used to request to assign L2 address only if neither subnet
+ nor ipv6_prefix are specified
+ </column>
</group>
<group title="Common Columns">
@@ -5754,6 +5754,23 @@ AT_CHECK([test "$p71_addr" != "$p72_addr"], [0], [])
AT_CHECK([test "$p71_addr" != "$p73_addr"], [0], [])
AT_CHECK([test "$p72_addr" != "$p73_addr"], [0], [])
+# request to assign mac only
+#
+ovn-nbctl ls-add sw8
+ovn-nbctl --wait=sb set Logical-Switch sw8 other_config:mac_only=true
+for n in $(seq 1 3); do
+ ovn-nbctl --wait=sb lsp-add sw8 "p8$n" -- lsp-set-addresses "p8$n" dynamic
+done
+AT_CHECK([ovn-nbctl get Logical-Switch-Port p81 dynamic_addresses], [0],
+ ["00:11:22:00:00:06"
+])
+AT_CHECK([ovn-nbctl get Logical-Switch-Port p82 dynamic_addresses], [0],
+ ["00:11:22:00:00:07"
+])
+AT_CHECK([ovn-nbctl get Logical-Switch-Port p83 dynamic_addresses], [0],
+ ["00:11:22:00:00:08"
+])
+
as ovn-sb
OVS_APP_EXIT_AND_WAIT([ovsdb-server])