libnetdevice: support host
Bug: 372814636
Test: verified with b/372814636 test service
Change-Id: I96b51cc90c08090b6bf28175b687820ff587abfd
diff --git a/automotive/can/1.0/default/libnetdevice/Android.bp b/automotive/can/1.0/default/libnetdevice/Android.bp
index 653e773..affbeee 100644
--- a/automotive/can/1.0/default/libnetdevice/Android.bp
+++ b/automotive/can/1.0/default/libnetdevice/Android.bp
@@ -26,6 +26,7 @@
cc_library_static {
name: "android.hardware.automotive.can@libnetdevice",
defaults: ["android.hardware.automotive.can@defaults"],
+ host_supported: true,
vendor_available: true,
srcs: [
"can.cpp",
diff --git a/automotive/can/1.0/default/libnetdevice/ethtool.cpp b/automotive/can/1.0/default/libnetdevice/ethtool.cpp
index 762ef5c..832eb5c 100644
--- a/automotive/can/1.0/default/libnetdevice/ethtool.cpp
+++ b/automotive/can/1.0/default/libnetdevice/ethtool.cpp
@@ -19,6 +19,7 @@
#include "ifreqs.h"
#include <linux/ethtool.h>
+#include <linux/sockios.h>
namespace android::netdevice::ethtool {
@@ -27,7 +28,7 @@
valueop.cmd = command;
auto ifr = ifreqs::fromName(ifname);
- ifr.ifr_data = &valueop;
+ ifr.ifr_data = reinterpret_cast<caddr_t>(&valueop);
if (!ifreqs::send(SIOCETHTOOL, ifr)) return std::nullopt;
return valueop.data;
@@ -39,7 +40,7 @@
valueop.data = value;
auto ifr = ifreqs::fromName(ifname);
- ifr.ifr_data = &valueop;
+ ifr.ifr_data = reinterpret_cast<caddr_t>(&valueop);
return ifreqs::send(SIOCETHTOOL, ifr);
}
diff --git a/automotive/can/1.0/default/libnetdevice/ifreqs.cpp b/automotive/can/1.0/default/libnetdevice/ifreqs.cpp
index 8471173..7dbd8fb 100644
--- a/automotive/can/1.0/default/libnetdevice/ifreqs.cpp
+++ b/automotive/can/1.0/default/libnetdevice/ifreqs.cpp
@@ -21,6 +21,8 @@
#include <android-base/logging.h>
#include <android-base/unique_fd.h>
+#include <sys/ioctl.h>
+
#include <map>
namespace android::netdevice::ifreqs {
@@ -70,7 +72,8 @@
struct ifreq fromName(const std::string& ifname) {
struct ifreq ifr = {};
- strlcpy(ifr.ifr_name, ifname.c_str(), IF_NAMESIZE);
+ // strncpy: last \0 initialized with ifreq above
+ strncpy(ifr.ifr_name, ifname.c_str(), IF_NAMESIZE - 1);
return ifr;
}
diff --git a/automotive/can/1.0/default/libnetdevice/libnetdevice.cpp b/automotive/can/1.0/default/libnetdevice/libnetdevice.cpp
index 413b4b1..e5a5719 100644
--- a/automotive/can/1.0/default/libnetdevice/libnetdevice.cpp
+++ b/automotive/can/1.0/default/libnetdevice/libnetdevice.cpp
@@ -26,6 +26,7 @@
#include <linux/can.h>
#include <linux/rtnetlink.h>
#include <net/if.h>
+#include <sys/ioctl.h>
#include <algorithm>
#include <iterator>