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

Commit 91c7ef2e authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk Committed by Android (Google) Code Review
Browse files

Merge changes from topic "libnl++"

* changes:
  Change libnl++ namespace to android::nl
  Split out libnl++ from libnetdevice
parents 9eaab747 1d5beb85
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -52,5 +52,6 @@ cc_binary {
    static_libs: [
        "android.hardware.automotive.can@libnetdevice",
        "android.hardware.automotive@libc++fs",
        "libnl++",
    ],
}
+3 −16
Original line number Diff line number Diff line
@@ -18,29 +18,16 @@ cc_library_static {
    name: "android.hardware.automotive.can@libnetdevice",
    defaults: ["android.hardware.automotive.can@defaults"],
    vendor_available: true,
    relative_install_path: "hw",
    srcs: [
        "protocols/common/Empty.cpp",
        "protocols/common/Error.cpp",
        "protocols/generic/Ctrl.cpp",
        "protocols/generic/Generic.cpp",
        "protocols/generic/GenericMessageBase.cpp",
        "protocols/generic/Unknown.cpp",
        "protocols/route/Link.cpp",
        "protocols/route/Route.cpp",
        "protocols/route/structs.cpp",
        "protocols/MessageDefinition.cpp",
        "protocols/NetlinkProtocol.cpp",
        "protocols/all.cpp",
        "NetlinkRequest.cpp",
        "NetlinkSocket.cpp",
        "can.cpp",
        "common.cpp",
        "ethtool.cpp",
        "ifreqs.cpp",
        "libnetdevice.cpp",
        "printer.cpp",
        "vlan.cpp",
    ],
    export_include_dirs: ["include"],
    static_libs: [
        "libnl++",
    ],
}
+4 −4
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@

#include <android-base/logging.h>
#include <android-base/unique_fd.h>
#include <libnetdevice/NetlinkRequest.h>
#include <libnetdevice/NetlinkSocket.h>
#include <libnl++/NetlinkRequest.h>
#include <libnl++/NetlinkSocket.h>

#include <linux/can.h>
#include <linux/can/error.h>
@@ -69,7 +69,7 @@ bool setBitrate(std::string ifname, uint32_t bitrate) {
    struct can_bittiming bt = {};
    bt.bitrate = bitrate;

    NetlinkRequest<struct ifinfomsg> req(RTM_NEWLINK, NLM_F_REQUEST);
    nl::NetlinkRequest<struct ifinfomsg> req(RTM_NEWLINK, NLM_F_REQUEST);

    const auto ifidx = nametoindex(ifname);
    if (ifidx == 0) {
@@ -89,7 +89,7 @@ bool setBitrate(std::string ifname, uint32_t bitrate) {
        }
    }

    NetlinkSocket sock(NETLINK_ROUTE);
    nl::NetlinkSocket sock(NETLINK_ROUTE);
    return sock.send(req) && sock.receiveAck();
}

+0 −23
Original line number Diff line number Diff line
@@ -32,27 +32,4 @@ unsigned int nametoindex(const std::string& ifname) {
    return 0;
}

std::string sanitize(std::string str) {
    str.erase(std::find(str.begin(), str.end(), '\0'), str.end());

    const auto isInvalid = [](char c) { return !isprint(c); };
    std::replace_if(str.begin(), str.end(), isInvalid, '?');

    return str;
}

uint16_t crc16(const nlbuf<uint8_t> data, uint16_t crc) {
    for (const auto byte : data.getRaw()) {
        crc ^= byte;
        for (unsigned i = 0; i < 8; i++) {
            if (crc & 1) {
                crc = (crc >> 1) ^ 0xA001;
            } else {
                crc >>= 1;
            }
        }
    }
    return crc;
}

}  // namespace android::netdevice
+1 −21
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

#pragma once

#include <libnetdevice/nlbuf.h>
#include <libnl++/nlbuf.h>

#include <linux/can.h>
#include <net/if.h>
@@ -36,24 +36,4 @@ namespace android::netdevice {
 */
unsigned int nametoindex(const std::string& ifname);

/**
 * Sanitize a string of unknown contents.
 *
 * Trims the string to the first '\0' character and replaces all non-printable characters with '?'.
 */
std::string sanitize(std::string str);

/**
 * Calculates a (optionally running) CRC16 checksum.
 *
 * CRC16 isn't a strong checksum, but is good for quick comparison purposes.
 * One benefit (and also a drawback too) is that all-zero payloads with any length will
 * always have a checksum of 0x0000.
 *
 * \param data Buffer to calculate checksum for
 * \param crc Previous CRC16 value to continue calculating running checksum
 * \return CRC16 checksum
 */
uint16_t crc16(const nlbuf<uint8_t> data, uint16_t crc = 0);

}  // namespace android::netdevice
Loading