ClatdController - only generate v4-interface name in one spot
Test: builds, atest
Bug: 65674744
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I9a18cb8b105e5c0cfdf8feff0f73c99643b0d6b6
diff --git a/server/ClatdController.cpp b/server/ClatdController.cpp
index 373d545..d82198b 100644
--- a/server/ClatdController.cpp
+++ b/server/ClatdController.cpp
@@ -344,6 +344,7 @@
// Initializes a ClatdTracker for the specified interface.
int ClatdController::ClatdTracker::init(unsigned networkId, const std::string& interface,
+ const std::string& v4interface,
const std::string& nat64Prefix) {
netId = networkId;
@@ -356,7 +357,7 @@
snprintf(netIdString, sizeof(netIdString), "%u", netId);
strlcpy(iface, interface.c_str(), sizeof(iface));
ifIndex = if_nametoindex(iface);
- snprintf(v4iface, sizeof(v4iface), "v4-%s", iface);
+ strlcpy(v4iface, v4interface.c_str(), sizeof(v4iface));
v4ifIndex = if_nametoindex(v4iface);
// Pass in everything that clatd needs: interface, a netid to use for DNS lookups, a fwmark for
@@ -422,10 +423,13 @@
unique_fd tmpTunFd(res);
// 4. create the v4-... tun interface
+ std::string v4interface("v4-");
+ v4interface += interface;
+
struct ifreq ifr = {
.ifr_flags = IFF_TUN,
};
- snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "v4-%s", interface.c_str());
+ strlcpy(ifr.ifr_name, v4interface.c_str(), sizeof(ifr.ifr_name));
res = ioctl(tmpTunFd, TUNSETIFF, &ifr, sizeof(ifr));
if (res == -1) {
@@ -436,7 +440,7 @@
// 5. initialize tracker object
ClatdTracker tracker;
- int ret = tracker.init(networkId, interface, nat64Prefix);
+ int ret = tracker.init(networkId, interface, v4interface, nat64Prefix);
if (ret) return ret;
// 6. create a throwaway socket to reserve a file descriptor number