Skip to content

Commit f017e8c

Browse files
committed
update nhg
Signed-off-by: Kanji Nakano <[email protected]>
1 parent 8f11ace commit f017e8c

File tree

2 files changed

+23
-21
lines changed

2 files changed

+23
-21
lines changed

fpmsyncd/routesync.cpp

+13-11
Original file line numberDiff line numberDiff line change
@@ -1672,7 +1672,7 @@ void RouteSync::onRouteMsg(int nlmsg_type, struct nl_object *obj, char *vrf)
16721672
const auto itg = m_nh_groups.find(nhg_id);
16731673
if(itg == m_nh_groups.end())
16741674
{
1675-
SWSS_LOG_DEBUG("NextHop group id %d not found. Dropping the route %s", nhg_id, destipprefix);
1675+
SWSS_LOG_ERROR("NextHop group id %d not found. Dropping the route %s", nhg_id, destipprefix);
16761676
return;
16771677
}
16781678
NextHopGroup& nhg = itg->second;
@@ -1866,10 +1866,11 @@ void RouteSync::onNextHopMsg(struct nlmsghdr *h, int len)
18661866
SWSS_LOG_INFO("New nexthop group message!");
18671867
struct nexthop_grp *nha_grp = (struct nexthop_grp *)RTA_DATA(tb[NHA_GROUP]);
18681868
grp_count = (int)(RTA_PAYLOAD(tb[NHA_GROUP]) / sizeof(*nha_grp));
1869-
1870-
if(grp_count > MAX_MULTIPATH_NUM)
1869+
if (grp_count > MAX_MULTIPATH_NUM)
1870+
{
1871+
SWSS_LOG_ERROR("Nexthop group count (%d) exceeds the maximum allowed (%d). Clamping to maximum.", grp_count, MAX_MULTIPATH_NUM);
18711872
grp_count = MAX_MULTIPATH_NUM;
1872-
1873+
}
18731874
for (int i = 0; i < grp_count; i++) {
18741875
grp[i].id = nha_grp[i].id;
18751876
/*
@@ -1917,19 +1918,20 @@ void RouteSync::onNextHopMsg(struct nlmsghdr *h, int len)
19171918
}
19181919
}
19191920
}
1920-
if(grp_count)
1921+
if (grp_count > 0)
19211922
{
1922-
vector<pair<uint32_t,uint8_t>> group;
1923-
for(int i = 0; i < grp_count; i++)
1923+
vector<pair<uint32_t, uint8_t>> group(grp_count);
1924+
for (int i = 0; i < grp_count; i++)
19241925
{
1925-
group.push_back(std::make_pair(grp[i].id, grp[i].weight));
1926+
group[i] = std::make_pair(grp[i].id, grp[i].weight);
19261927
}
1928+
19271929
auto it = m_nh_groups.find(id);
1928-
if(it != m_nh_groups.end())
1930+
if (it != m_nh_groups.end())
19291931
{
19301932
NextHopGroup &nhg = it->second;
19311933
nhg.group = group;
1932-
if(nhg.installed)
1934+
if (nhg.installed)
19331935
{
19341936
updateNextHopGroupDb(nhg);
19351937
}
@@ -2630,7 +2632,7 @@ void RouteSync::onWarmStartEnd(DBConnector& applStateDb)
26302632
*/
26312633
const string RouteSync::getNextHopGroupKeyAsString(uint32_t id) const
26322634
{
2633-
return string("ID") + to_string(id);
2635+
return to_string(id);
26342636
}
26352637

26362638
/*

tests/mock_tests/fpmsyncd/test_routesync.cpp

+10-10
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ TEST_F(FpmSyncdResponseTest, TestIPv6NextHopAdd)
381381
Table nexthop_group_table(m_db.get(), APP_NEXTHOP_GROUP_TABLE_NAME);
382382

383383
vector<FieldValueTuple> fieldValues;
384-
string key = "ID" + to_string(test_id);
384+
string key = to_string(test_id);
385385
nexthop_group_table.get(key, fieldValues);
386386

387387
// onNextHopMsg only updates m_nh_groups unless the nhg is marked as installed
@@ -452,8 +452,8 @@ TEST_F(FpmSyncdResponseTest, TestSkipSpecialInterfaces)
452452

453453
TEST_F(FpmSyncdResponseTest, TestNextHopGroupKeyString)
454454
{
455-
EXPECT_EQ(m_mockRouteSync.getNextHopGroupKeyAsString(1), "ID1");
456-
EXPECT_EQ(m_mockRouteSync.getNextHopGroupKeyAsString(1234), "ID1234");
455+
EXPECT_EQ(m_mockRouteSync.getNextHopGroupKeyAsString(1), "1");
456+
EXPECT_EQ(m_mockRouteSync.getNextHopGroupKeyAsString(1234), "1234");
457457
}
458458

459459
TEST_F(FpmSyncdResponseTest, TestGetNextHopGroupFields)
@@ -530,7 +530,7 @@ TEST_F(FpmSyncdResponseTest, TestUpdateNextHopGroupDb)
530530
m_mockRouteSync.updateNextHopGroupDb(nhg);
531531

532532
vector<FieldValueTuple> fieldValues;
533-
nexthop_group_table.get("ID1", fieldValues);
533+
nexthop_group_table.get("1", fieldValues);
534534

535535
EXPECT_EQ(fieldValues.size(), 2);
536536
EXPECT_EQ(fvField(fieldValues[0]), "nexthop");
@@ -559,7 +559,7 @@ TEST_F(FpmSyncdResponseTest, TestUpdateNextHopGroupDb)
559559
ASSERT_NE(it, m_mockRouteSync.m_nh_groups.end());
560560
EXPECT_TRUE(it->second.installed);
561561
vector<FieldValueTuple> fieldValues;
562-
nexthop_group_table.get("ID3", fieldValues);
562+
nexthop_group_table.get("3", fieldValues);
563563
EXPECT_EQ(fieldValues.size(), 3);
564564
EXPECT_EQ(fvField(fieldValues[0]), "nexthop");
565565
EXPECT_EQ(fvValue(fieldValues[0]), "192.168.1.1,192.168.1.2");
@@ -575,7 +575,7 @@ TEST_F(FpmSyncdResponseTest, TestUpdateNextHopGroupDb)
575575
m_mockRouteSync.updateNextHopGroupDb(nhg);
576576

577577
vector<FieldValueTuple> fieldValues;
578-
nexthop_group_table.get("ID4", fieldValues);
578+
nexthop_group_table.get("4", fieldValues);
579579

580580
EXPECT_EQ(fieldValues.size(), 2);
581581
EXPECT_EQ(fvField(fieldValues[0]), "nexthop");
@@ -590,7 +590,7 @@ TEST_F(FpmSyncdResponseTest, TestUpdateNextHopGroupDb)
590590
m_mockRouteSync.updateNextHopGroupDb(nhg);
591591

592592
vector<FieldValueTuple> fieldValues;
593-
nexthop_group_table.get("ID5", fieldValues);
593+
nexthop_group_table.get("5", fieldValues);
594594

595595
EXPECT_EQ(fieldValues.size(), 2);
596596
EXPECT_EQ(fvField(fieldValues[0]), "nexthop");
@@ -740,7 +740,7 @@ TEST_F(FpmSyncdResponseTest, TestNextHopGroupAdd)
740740

741741
Table nexthop_group_table(m_db.get(), APP_NEXTHOP_GROUP_TABLE_NAME);
742742
vector<FieldValueTuple> fieldValues;
743-
string key = "ID" + to_string(group_id);
743+
string key = to_string(group_id);
744744
nexthop_group_table.get(key, fieldValues);
745745

746746
ASSERT_EQ(fieldValues.size(), 3) << "Wrong number of fields in DB";
@@ -886,15 +886,15 @@ TEST_F(FpmSyncdResponseTest, TestRouteMsgWithNHG)
886886

887887
for (const auto& fv : fvs) {
888888
if (fvField(fv) == "nexthop_group") {
889-
EXPECT_EQ(fvValue(fv), "ID2");
889+
EXPECT_EQ(fvValue(fv), "2");
890890
} else if (fvField(fv) == "protocol") {
891891
EXPECT_EQ(fvValue(fv), "static");
892892
}
893893
}
894894

895895
vector<FieldValueTuple> group_fvs;
896896
Table nexthop_group_table(m_db.get(), APP_NEXTHOP_GROUP_TABLE_NAME);
897-
EXPECT_TRUE(nexthop_group_table.get("ID2", group_fvs));
897+
EXPECT_TRUE(nexthop_group_table.get("2", group_fvs));
898898

899899
// clean up
900900
free(nlh1);

0 commit comments

Comments
 (0)