Skip to content

Commit 8695fce

Browse files
committed
Merge remote-tracking branch 'public/master' into dot1p_master
2 parents b969a1c + 8fcf43d commit 8695fce

35 files changed

Lines changed: 6008 additions & 3489 deletions

cfgmgr/intfmgr.cpp

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,27 @@ IntfMgr::IntfMgr(DBConnector *cfgDb, DBConnector *appDb, DBConnector *stateDb, c
3030
}
3131

3232
void IntfMgr::setIntfIp(const string &alias, const string &opCmd,
33-
const string &ipPrefixStr, const bool ipv4)
33+
const IpPrefix &ipPrefix)
3434
{
35-
stringstream cmd;
36-
string res;
35+
stringstream cmd;
36+
string res;
37+
string ipPrefixStr = ipPrefix.to_string();
38+
string broadcastIpStr = ipPrefix.getBroadcastIp().to_string();
39+
int prefixLen = ipPrefix.getMaskLength();
3740

38-
if (ipv4)
41+
if (ipPrefix.isV4())
3942
{
40-
cmd << IP_CMD << " address " << opCmd << " " << ipPrefixStr << " dev " << alias;
43+
(prefixLen < 31) ?
44+
(cmd << IP_CMD << " address " << opCmd << " " << ipPrefixStr << " broadcast " << broadcastIpStr <<" dev " << alias) :
45+
(cmd << IP_CMD << " address " << opCmd << " " << ipPrefixStr << " dev " << alias);
4146
}
4247
else
4348
{
44-
cmd << IP_CMD << " -6 address " << opCmd << " " << ipPrefixStr << " dev " << alias;
49+
(prefixLen < 127) ?
50+
(cmd << IP_CMD << " -6 address " << opCmd << " " << ipPrefixStr << " broadcast " << broadcastIpStr << " dev " << alias) :
51+
(cmd << IP_CMD << " -6 address " << opCmd << " " << ipPrefixStr << " dev " << alias);
4552
}
53+
4654
int ret = swss::exec(cmd.str(), res);
4755
if (ret)
4856
{
@@ -202,7 +210,7 @@ bool IntfMgr::doIntfAddrTask(const vector<string>& keys,
202210
// Set Interface IP except for lo
203211
if (!is_lo)
204212
{
205-
setIntfIp(alias, "add", ip_prefix.to_string(), ip_prefix.isV4());
213+
setIntfIp(alias, "add", ip_prefix);
206214
}
207215

208216
std::vector<FieldValueTuple> fvVector;
@@ -219,7 +227,7 @@ bool IntfMgr::doIntfAddrTask(const vector<string>& keys,
219227
// Set Interface IP except for lo
220228
if (!is_lo)
221229
{
222-
setIntfIp(alias, "del", ip_prefix.to_string(), ip_prefix.isV4());
230+
setIntfIp(alias, "del", ip_prefix);
223231
}
224232
m_appIntfTableProducer.del(appKey);
225233
m_stateIntfTable.del(keys[0] + state_db_key_delimiter + keys[1]);

cfgmgr/intfmgr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class IntfMgr : public Orch
2121
Table m_cfgIntfTable, m_cfgVlanIntfTable;
2222
Table m_statePortTable, m_stateLagTable, m_stateVlanTable, m_stateVrfTable, m_stateIntfTable;
2323

24-
void setIntfIp(const string &alias, const string &opCmd, const string &ipPrefixStr, const bool ipv4 = true);
24+
void setIntfIp(const string &alias, const string &opCmd, const IpPrefix &ipPrefix);
2525
void setIntfVrf(const string &alias, const string vrfName);
2626
bool doIntfGeneralTask(const vector<string>& keys, const vector<FieldValueTuple>& data, const string& op);
2727
bool doIntfAddrTask(const vector<string>& keys, const vector<FieldValueTuple>& data, const string& op);

cfgmgr/vlanmgr.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,19 @@ VlanMgr::VlanMgr(DBConnector *cfgDb, DBConnector *appDb, DBConnector *stateDb, c
5151
// The command should be generated as:
5252
// /bin/bash -c "/sbin/ip link del Bridge 2>/dev/null ;
5353
// /sbin/ip link add Bridge up type bridge &&
54-
// /sbin/bridge vlan del vid 1 dev Bridge self"
54+
// /sbin/bridge vlan del vid 1 dev Bridge self;
55+
// /sbin/ip link del dummy 2>/dev/null;
56+
// /sbin/ip link add dummy type dummy &&
57+
// sbin/ip link set dummy master Bridge"
5558

5659
const std::string cmds = std::string("")
5760
+ BASH_CMD + " -c \""
5861
+ IP_CMD + " link del " + DOT1Q_BRIDGE_NAME + " 2>/dev/null; "
5962
+ IP_CMD + " link add " + DOT1Q_BRIDGE_NAME + " up type bridge && "
60-
+ BRIDGE_CMD + " vlan del vid " + DEFAULT_VLAN_ID + " dev " + DOT1Q_BRIDGE_NAME + " self\"";
63+
+ BRIDGE_CMD + " vlan del vid " + DEFAULT_VLAN_ID + " dev " + DOT1Q_BRIDGE_NAME + " self; "
64+
+ IP_CMD + " link del dev dummy 2>/dev/null; "
65+
+ IP_CMD + " link add dummy type dummy && "
66+
+ IP_CMD + " link set dummy master " + DOT1Q_BRIDGE_NAME + "\"";
6167

6268
std::string res;
6369
EXEC_WITH_ERROR_THROW(cmds, res);
@@ -169,10 +175,12 @@ bool VlanMgr::addHostVlanMember(int vlan_id, const string &port_alias, const str
169175

170176
// The command should be generated as:
171177
// /bin/bash -c "/sbin/ip link set {{port_alias}} master Bridge &&
178+
// /sbin/bridge vlan del vid 1 dev {{ port_alias }} &&
172179
// /sbin/bridge vlan add vid {{vlan_id}} dev {{port_alias}} {{tagging_mode}}"
173180
const std::string cmds = std::string("")
174181
+ BASH_CMD + " -c \""
175182
+ IP_CMD + " link set " + port_alias + " master " + DOT1Q_BRIDGE_NAME + " && "
183+
+ BRIDGE_CMD + " vlan del vid " + DEFAULT_VLAN_ID + " dev " + port_alias + " && "
176184
+ BRIDGE_CMD + " vlan add vid " + std::to_string(vlan_id) + " dev " + port_alias + " " + tagging_cmd + "\"";
177185

178186
std::string res;

debian/swss.install

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
swssconfig/sample/netbouncer.json etc/swss/config.d
22
swssconfig/sample/00-copp.config.json etc/swss/config.d
33
neighsyncd/restore_neighbors.py usr/bin
4+
fpmsyncd/bgp_eoiu_marker.py usr/bin

0 commit comments

Comments
 (0)