* (at your option) any later version.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <linux/ip.h>
#include <linux/if_arp.h>
#include <linux/if_tunnel.h>
+#include <linux/limits.h>
#include "nhrp_protocol.h"
#include "os.h"
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;
static int linux_icmp_redirect_off(const char *iface)
{
- char fname[256];
+ char fname[PATH_MAX];
int fd, ret = -1;
- sprintf(fname, "/proc/sys/net/ipv4/conf/%s/send_redirects", iface);
+ snprintf(fname, sizeof(fname),
+ "/proc/sys/net/ipv4/conf/%s/send_redirects", iface);
fd = open(fname, O_WRONLY);
if (fd < 0)
return -1;