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

Commit caeae195 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Implement setting hardware address

Bug: 156784343
Test: manual
Change-Id: I6a533ab15bb93db26261f826bb8e7d8f12824d62
parent 91c3a047
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -104,6 +104,14 @@ bool del(std::string dev);
 */
std::optional<hwaddr_t> getHwAddr(const std::string& ifname);

/**
 * Changes interface's hardware address.
 *
 * \param ifname Interface name
 * \param hwaddr New hardware address to set
 */
bool setHwAddr(const std::string& ifname, hwaddr_t hwaddr);

}  // namespace android::netdevice

bool operator==(const android::netdevice::hwaddr_t lhs, const unsigned char rhs[ETH_ALEN]);
+10 −0
Original line number Diff line number Diff line
@@ -90,6 +90,16 @@ std::optional<hwaddr_t> getHwAddr(const std::string& ifname) {
    return hwaddr;
}

bool setHwAddr(const std::string& ifname, hwaddr_t hwaddr) {
    auto ifr = ifreqs::fromName(ifname);

    // fetch sa_family
    if (!ifreqs::send(SIOCGIFHWADDR, ifr)) return false;

    memcpy(ifr.ifr_hwaddr.sa_data, hwaddr.data(), hwaddr.size());
    return ifreqs::send(SIOCSIFHWADDR, ifr);
}

}  // namespace android::netdevice

bool operator==(const android::netdevice::hwaddr_t lhs, const unsigned char rhs[ETH_ALEN]) {