/*
fd_device.c -- Interaction with Android tun fd
Copyright (C) 2001-2005 Ivo Timmermans,
- 2001-2021 Guus Sliepen <guus@tinc-vpn.org>
+ 2001-2022 Guus Sliepen <guus@tinc-vpn.org>
2009 Grzegorz Dymarek <gregd72002@googlemail.com>
2016-2020 Pacien TRAN-GIRARD <pacien@pacien.net>
#include "logger.h"
#include "net.h"
#include "route.h"
-#include "utils.h"
struct unix_socket_addr {
size_t size;
struct iovec iov = {0};
char cmsgbuf[CMSG_SPACE(sizeof(device_fd))];
struct msghdr msg = {0};
- int ret;
+ ssize_t ret;
struct cmsghdr *cmsgptr;
iov.iov_base = &iobuf;
msg.msg_controllen = sizeof(cmsgbuf);
if((ret = recvmsg(socket, &msg, 0)) < 1) {
- logger(DEBUG_ALWAYS, LOG_ERR, "Could not read from unix socket (error %d)!", ret);
+ logger(DEBUG_ALWAYS, LOG_ERR, "Could not read from unix socket (error %ld)!", (long)ret);
return -1;
}
return false;
}
- if(!get_config_string(lookup_config(config_tree, "Device"), &device)) {
+ if(!get_config_string(lookup_config(&config_tree, "Device"), &device)) {
logger(DEBUG_ALWAYS, LOG_ERR, "Could not read device from configuration!");
return false;
}
static void close_device(void) {
close(device_fd);
device_fd = -1;
+ free(iface);
+ iface = NULL;
+ free(device);
+ device = NULL;
}
static inline uint16_t get_ip_ethertype(vpn_packet_t *packet) {
}
static bool read_packet(vpn_packet_t *packet) {
- int lenin = read(device_fd, DATA(packet) + ETH_HLEN, MTU - ETH_HLEN);
+ ssize_t lenin = read(device_fd, DATA(packet) + ETH_HLEN, MTU - ETH_HLEN);
if(lenin <= 0) {
logger(DEBUG_ALWAYS, LOG_ERR, "Error while reading from fd/%d: %s!", device_fd, strerror(errno));