int os_socket(void)
{
if (nhrp_socket_fd < 0)
- nhrp_socket_fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_NHRP));
+ nhrp_socket_fd =
+ socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_NHRP));
return nhrp_socket_fd;
}
-int os_sendmsg(const uint8_t *buf, size_t len, int ifindex, const uint8_t *addr, size_t addrlen)
+int os_sendmsg(const uint8_t *buf, size_t len, int ifindex, const uint8_t *addr,
+ size_t addrlen)
{
struct sockaddr_ll lladdr;
struct iovec iov = {
- .iov_base = (void*) buf,
- .iov_len = len,
+ .iov_base = (void *)buf, .iov_len = len,
};
struct msghdr msg = {
.msg_name = &lladdr,
return 0;
}
-int os_recvmsg(uint8_t *buf, size_t *len, int *ifindex, uint8_t *addr, size_t *addrlen)
+int os_recvmsg(uint8_t *buf, size_t *len, int *ifindex, uint8_t *addr,
+ size_t *addrlen)
{
struct sockaddr_ll lladdr;
struct iovec iov = {
- .iov_base = buf,
- .iov_len = *len,
+ .iov_base = buf, .iov_len = *len,
};
struct msghdr msg = {
.msg_name = &lladdr,
*len = r;
*ifindex = lladdr.sll_ifindex;
- if (*addrlen <= (size_t) lladdr.sll_addr) {
+ if (*addrlen <= (size_t)lladdr.sll_addr) {
if (memcmp(lladdr.sll_addr, "\x00\x00\x00\x00", 4) != 0) {
memcpy(addr, lladdr.sll_addr, lladdr.sll_halen);
*addrlen = lladdr.sll_halen;
{
struct ifreq ifr;
- strncpy(ifr.ifr_name, iface, IFNAMSIZ);
+ strncpy(ifr.ifr_name, iface, IFNAMSIZ - 1);
if (ioctl(nhrp_socket_fd, SIOCGIFFLAGS, &ifr))
return -1;
int os_configure_dmvpn(unsigned int ifindex, const char *ifname, int af)
{
- int ret = -1;
+ int ret = 0;
switch (af) {
case AF_INET:
- ret = linux_icmp_redirect_off("all");
+ ret |= linux_icmp_redirect_off("all");
ret |= linux_icmp_redirect_off(ifname);
- ret |= netlink_configure_arp(ifindex, AF_INET);
- ret |= linux_configure_arp(ifname, 1);
break;
}
+ ret |= linux_configure_arp(ifname, 1);
+ ret |= netlink_configure_arp(ifindex, af);
return ret;
}