Add rate limit to l2gre vport.
diff --git a/c_gen/templates/loci_show.h b/c_gen/templates/loci_show.h
index 370dca0..3624bcd 100644
--- a/c_gen/templates/loci_show.h
+++ b/c_gen/templates/loci_show.h
@@ -408,6 +408,7 @@
#define LOCI_SHOW_u8_dscp(writer, cookie, val) LOCI_SHOW_u8(writer, cookie, val)
#define LOCI_SHOW_u8_ttl(writer, cookie, val) LOCI_SHOW_u8(writer, cookie, val)
#define LOCI_SHOW_u32_vpn(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
+#define LOCI_SHOW_u32_rate_limit(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
#define LOCI_SHOW_u32_flags(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
#define LOCI_SHOW_desc_str_image_checksum(write, cookie, val) LOCI_SHOW_desc_str(writer, cookie, val)
#define LOCI_SHOW_desc_str_startup_config_checksum(write, cookie, val) LOCI_SHOW_desc_str(writer, cookie, val)
diff --git a/openflow_input/bsn_vport b/openflow_input/bsn_vport
index 4f06462..6137a57 100644
--- a/openflow_input/bsn_vport
+++ b/openflow_input/bsn_vport
@@ -50,6 +50,8 @@
OF_BSN_VPORT_L2GRE_DSCP_COPY = 0x4,
OF_BSN_VPORT_L2GRE_LOOPBACK_IS_VALID = 0x8,
+
+ OF_BSN_VPORT_L2GRE_RATE_LIMIT_IS_VALID = 0x10,
};
// BSN Virtual port object header
@@ -91,6 +93,7 @@
uint8_t ttl;
pad(2);
uint32_t vpn; /* VPN ID (for GRE Key) */
+ uint32_t rate_limit; /* Rate limit in Kbps */
of_port_name_t if_name; /* Virtual Interface Name */
};
diff --git a/test_data/of13/bsn_virtual_port_create_request__l2gre.data b/test_data/of13/bsn_virtual_port_create_request__l2gre.data
index 9d90293..661fea1 100644
--- a/test_data/of13/bsn_virtual_port_create_request__l2gre.data
+++ b/test_data/of13/bsn_virtual_port_create_request__l2gre.data
@@ -1,12 +1,12 @@
-- binary
04 04 # version, type
-00 4c # len
+00 50 # len
01 02 03 04 # xid
00 5c 16 c7 # experimenter
00 00 00 0f # subtype
00 01 # vport type
-00 3c # vport len
-00 00 00 03 # vport flags
+00 40 # vport len
+00 00 00 1b # vport flags
00 00 00 01 # parent port no
00 00 00 02 # loopback port no
0a 0b 0c 0d 0e 0f # local mac
@@ -15,11 +15,13 @@
c0 00 10 02 # dst ip
01 40 00 00 # dscp, ttl, pad(2)
00 00 be ef # vpn
+00 00 04 00 # rate limit
66 6f 6f 00 00 00 00 00 00 00 00 00 00 00 00 00 # vport if name
-- python
ofp.message.bsn_virtual_port_create_request(
xid=0x01020304, vport=ofp.bsn_vport_l2gre(
-flags=ofp.OF_BSN_VPORT_L2GRE_LOCAL_MAC_IS_VALID | ofp.OF_BSN_VPORT_L2GRE_DSCP_ASSIGN,
+flags=ofp.OF_BSN_VPORT_L2GRE_LOCAL_MAC_IS_VALID | ofp.OF_BSN_VPORT_L2GRE_DSCP_ASSIGN | \
+ofp.OF_BSN_VPORT_L2GRE_LOOPBACK_IS_VALID | ofp.OF_BSN_VPORT_L2GRE_RATE_LIMIT_IS_VALID,
port_no=1,
loopback_port_no=2,
local_mac=[0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f],
@@ -29,6 +31,7 @@
dscp=1,
ttl=64,
vpn=0xbeef,
+rate_limit=0x400,
if_name="foo"
))
-- c
@@ -42,7 +45,9 @@
of_mac_addr_t nh_mac = { { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 } };
of_bsn_vport_l2gre_flags_set(vport,
OF_BSN_VPORT_L2GRE_LOCAL_MAC_IS_VALID |
- OF_BSN_VPORT_L2GRE_DSCP_ASSIGN);
+ OF_BSN_VPORT_L2GRE_DSCP_ASSIGN |
+ OF_BSN_VPORT_L2GRE_LOOPBACK_IS_VALID |
+ OF_BSN_VPORT_L2GRE_RATE_LIMIT_IS_VALID);
of_bsn_vport_l2gre_port_no_set(vport, 1);
of_bsn_vport_l2gre_loopback_port_no_set(vport, 2);
of_bsn_vport_l2gre_local_mac_set(vport, local_mac);
@@ -52,6 +57,7 @@
of_bsn_vport_l2gre_dscp_set(vport, 1);
of_bsn_vport_l2gre_ttl_set(vport, 64);
of_bsn_vport_l2gre_vpn_set(vport, 0xbeef);
+ of_bsn_vport_l2gre_rate_limit_set(vport, 0x400);
of_bsn_vport_l2gre_if_name_set(vport, if_name);
}
of_bsn_virtual_port_create_request_vport_set(obj, vport);
@@ -64,7 +70,9 @@
.setFlags(
ImmutableSet.<OFBsnVportL2GreFlags>of(
OFBsnVportL2GreFlags.BSN_VPORT_L2GRE_LOCAL_MAC_IS_VALID,
- OFBsnVportL2GreFlags.BSN_VPORT_L2GRE_DSCP_ASSIGN
+ OFBsnVportL2GreFlags.BSN_VPORT_L2GRE_DSCP_ASSIGN,
+ OFBsnVportL2GreFlags.BSN_VPORT_L2GRE_LOOPBACK_IS_VALID,
+ OFBsnVportL2GreFlags.BSN_VPORT_L2GRE_RATE_LIMIT_IS_VALID
)
)
.setPortNo(OFPort.of(1))
@@ -76,6 +84,7 @@
.setDscp((short)1)
.setTtl((short)64)
.setVpn(0xbeef)
+ .setRateLimit(0x400)
.setIfName("foo")
.build()
);