Skip to content

Commit 2c9d6b1

Browse files
committed
Merge branch 'sonic-net:master' into vrrp_orch
2 parents 64e622e + f650a3b commit 2c9d6b1

File tree

4 files changed

+64
-10
lines changed

4 files changed

+64
-10
lines changed

orchagent/aclorch.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ acl_rule_attr_lookup_t aclMatchLookup =
7575
{ MATCH_INNER_L4_SRC_PORT, SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT },
7676
{ MATCH_INNER_L4_DST_PORT, SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT },
7777
{ MATCH_BTH_OPCODE, SAI_ACL_ENTRY_ATTR_FIELD_BTH_OPCODE},
78-
{ MATCH_AETH_SYNDROME, SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME}
78+
{ MATCH_AETH_SYNDROME, SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME},
79+
{ MATCH_TUNNEL_TERM, SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED}
7980
};
8081

8182
static acl_range_type_lookup_t aclRangeTypeLookup =
@@ -808,6 +809,10 @@ bool AclRule::validateAddMatch(string attr_name, string attr_value)
808809
{
809810
return false;
810811
}
812+
else if (attr_name == MATCH_TUNNEL_TERM)
813+
{
814+
matchData.data.booldata = (attr_name == "true");
815+
}
811816
else if (attr_name == MATCH_IN_PORTS)
812817
{
813818
auto ports = tokenize(attr_value, ',');

orchagent/aclorch.h

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
#define MATCH_INNER_L4_DST_PORT "INNER_L4_DST_PORT"
5353
#define MATCH_BTH_OPCODE "BTH_OPCODE"
5454
#define MATCH_AETH_SYNDROME "AETH_SYNDROME"
55+
#define MATCH_TUNNEL_TERM "TUNNEL_TERM"
5556

5657
#define BIND_POINT_TYPE_PORT "PORT"
5758
#define BIND_POINT_TYPE_PORTCHANNEL "PORTCHANNEL"

tests/mock_tests/aclorch_ut.cpp

+56-3
Original file line numberDiff line numberDiff line change
@@ -1414,6 +1414,7 @@ namespace aclorch_test
14141414
// Table not created without table type
14151415
ASSERT_FALSE(orch->getAclTable(aclTableName));
14161416

1417+
auto matches = string(MATCH_SRC_IP) + comma + MATCH_ETHER_TYPE + comma + MATCH_L4_SRC_PORT_RANGE + comma + MATCH_BTH_OPCODE + comma + MATCH_AETH_SYNDROME + comma + MATCH_TUNNEL_TERM;
14171418
orch->doAclTableTypeTask(
14181419
deque<KeyOpFieldsValuesTuple>(
14191420
{
@@ -1423,7 +1424,7 @@ namespace aclorch_test
14231424
{
14241425
{
14251426
ACL_TABLE_TYPE_MATCHES,
1426-
string(MATCH_SRC_IP) + comma + MATCH_ETHER_TYPE + comma + MATCH_L4_SRC_PORT_RANGE + comma + MATCH_BTH_OPCODE + comma + MATCH_AETH_SYNDROME
1427+
matches
14271428
},
14281429
{
14291430
ACL_TABLE_TYPE_BPOINT_TYPES,
@@ -1447,6 +1448,7 @@ namespace aclorch_test
14471448
{ "SAI_ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE", "1:SAI_ACL_RANGE_TYPE_L4_SRC_PORT_RANGE" },
14481449
{ "SAI_ACL_TABLE_ATTR_FIELD_BTH_OPCODE", "true" },
14491450
{ "SAI_ACL_TABLE_ATTR_FIELD_AETH_SYNDROME", "true" },
1451+
{ "SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED", "true" },
14501452
};
14511453

14521454
ASSERT_TRUE(validateAclTable(
@@ -1563,18 +1565,69 @@ namespace aclorch_test
15631565

15641566
ASSERT_FALSE(orch->getAclRule(aclTableName, aclRuleName));
15651567

1566-
orch->doAclTableTypeTask(
1568+
// Verify ACL_RULE with TUNN_TERM attribute
1569+
orch->doAclRuleTask(
15671570
deque<KeyOpFieldsValuesTuple>(
15681571
{
15691572
{
1570-
aclTableTypeName,
1573+
aclTableName + "|" + "TUNN_TERM_RULE0",
1574+
SET_COMMAND,
1575+
{
1576+
{ MATCH_SRC_IP, "1.1.1.1/32" },
1577+
{ ACTION_PACKET_ACTION, PACKET_ACTION_DROP },
1578+
{ MATCH_TUNNEL_TERM, "true" }
1579+
}
1580+
},
1581+
{
1582+
aclTableName + "|" + "TUNN_TERM_RULE1",
1583+
SET_COMMAND,
1584+
{
1585+
{ MATCH_SRC_IP, "2.1.1.1/32" },
1586+
{ ACTION_PACKET_ACTION, PACKET_ACTION_DROP },
1587+
{ MATCH_TUNNEL_TERM, "false" }
1588+
}
1589+
}
1590+
}
1591+
)
1592+
);
1593+
1594+
// Verify if the rules are created
1595+
ASSERT_TRUE(orch->getAclRule(aclTableName, "TUNN_TERM_RULE0"));
1596+
ASSERT_TRUE(orch->getAclRule(aclTableName, "TUNN_TERM_RULE1"));
1597+
1598+
orch->doAclRuleTask(
1599+
deque<KeyOpFieldsValuesTuple>(
1600+
{
1601+
{
1602+
aclTableName + "|" + "TUNN_TERM_RULE0",
1603+
DEL_COMMAND,
1604+
{}
1605+
},
1606+
{
1607+
aclTableName + "|" + "TUNN_TERM_RULE1",
15711608
DEL_COMMAND,
15721609
{}
15731610
}
15741611
}
15751612
)
15761613
);
15771614

1615+
// Make sure the rules are deleted
1616+
ASSERT_FALSE(orch->getAclRule(aclTableName, "TUNN_TERM_RULE0"));
1617+
ASSERT_FALSE(orch->getAclRule(aclTableName, "TUNN_TERM_RULE1"));
1618+
1619+
orch->doAclTableTypeTask(
1620+
deque<KeyOpFieldsValuesTuple>(
1621+
{
1622+
{
1623+
aclTableTypeName,
1624+
DEL_COMMAND,
1625+
{}
1626+
}
1627+
}
1628+
)
1629+
);
1630+
15781631
// Table still exists
15791632
ASSERT_TRUE(orch->getAclTable(aclTableName));
15801633
ASSERT_FALSE(orch->getAclTableType(aclTableTypeName));

vrrpsyncd/vrrpsync.cpp

+1-6
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ bool VrrpIsVrrpIntf(const char *ifname)
6969
if (!ifname)
7070
return false;
7171

72-
if (strncmp(ifname, "vrrp", 4))
72+
if (strncmp(ifname, "Vrrp", 4))
7373
return false;
7474

7575
return true;
@@ -438,17 +438,12 @@ void VrrpSync::onMsg(int nlmsg_type, struct nl_object *obj)
438438
unsigned int if_flags = 0;
439439
int l_link;
440440

441-
bool delete_key = false;
442-
443441
m_netLinkOnMsg++;
444442

445443
if ((nlmsg_type != RTM_NEWLINK) && (nlmsg_type != RTM_DELLINK) &&
446444
(nlmsg_type != RTM_NEWADDR) && (nlmsg_type != RTM_DELADDR))
447445
return;
448446

449-
if ((nlmsg_type == RTM_DELLINK) || (nlmsg_type == RTM_DELADDR))
450-
delete_key = true;
451-
452447
switch (nlmsg_type)
453448
{
454449

0 commit comments

Comments
 (0)