Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 426708b9 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

libnetdevice: support host

Bug: 372814636
Test: verified with b/372814636 test service
Change-Id: I96b51cc90c08090b6bf28175b687820ff587abfd
parent 6f3c1bf1
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@ package {
cc_library_static {
cc_library_static {
    name: "android.hardware.automotive.can@libnetdevice",
    name: "android.hardware.automotive.can@libnetdevice",
    defaults: ["android.hardware.automotive.can@defaults"],
    defaults: ["android.hardware.automotive.can@defaults"],
    host_supported: true,
    vendor_available: true,
    vendor_available: true,
    srcs: [
    srcs: [
        "can.cpp",
        "can.cpp",
+3 −2
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@
#include "ifreqs.h"
#include "ifreqs.h"


#include <linux/ethtool.h>
#include <linux/ethtool.h>
#include <linux/sockios.h>


namespace android::netdevice::ethtool {
namespace android::netdevice::ethtool {


@@ -27,7 +28,7 @@ std::optional<uint32_t> getValue(const std::string& ifname, uint32_t command) {
    valueop.cmd = command;
    valueop.cmd = command;


    auto ifr = ifreqs::fromName(ifname);
    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;
    if (!ifreqs::send(SIOCETHTOOL, ifr)) return std::nullopt;
    return valueop.data;
    return valueop.data;
@@ -39,7 +40,7 @@ bool setValue(const std::string& ifname, uint32_t command, uint32_t value) {
    valueop.data = value;
    valueop.data = value;


    auto ifr = ifreqs::fromName(ifname);
    auto ifr = ifreqs::fromName(ifname);
    ifr.ifr_data = &valueop;
    ifr.ifr_data = reinterpret_cast<caddr_t>(&valueop);


    return ifreqs::send(SIOCETHTOOL, ifr);
    return ifreqs::send(SIOCETHTOOL, ifr);
}
}
+4 −1
Original line number Original line Diff line number Diff line
@@ -21,6 +21,8 @@
#include <android-base/logging.h>
#include <android-base/logging.h>
#include <android-base/unique_fd.h>
#include <android-base/unique_fd.h>


#include <sys/ioctl.h>

#include <map>
#include <map>


namespace android::netdevice::ifreqs {
namespace android::netdevice::ifreqs {
@@ -70,7 +72,8 @@ bool send(unsigned long request, struct ifreq& ifr) {


struct ifreq fromName(const std::string& ifname) {
struct ifreq fromName(const std::string& ifname) {
    struct ifreq ifr = {};
    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;
    return ifr;
}
}


+1 −0
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@
#include <linux/can.h>
#include <linux/can.h>
#include <linux/rtnetlink.h>
#include <linux/rtnetlink.h>
#include <net/if.h>
#include <net/if.h>
#include <sys/ioctl.h>


#include <algorithm>
#include <algorithm>
#include <iterator>
#include <iterator>
+1 −0
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@ package {
cc_library_static {
cc_library_static {
    name: "libnl++",
    name: "libnl++",
    defaults: ["android.hardware.automotive.can@defaults"],
    defaults: ["android.hardware.automotive.can@defaults"],
    host_supported: true,
    vendor_available: true,
    vendor_available: true,
    srcs: [
    srcs: [
        "protocols/common/Empty.cpp",
        "protocols/common/Empty.cpp",
Loading