logging: Switch to using libosmocore logging for all the code
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 7c06e27..590f0ec 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -4,4 +4,4 @@
AM_CFLAGS = -O2 -fno-builtin -Wall -DSBINDIR='"$(sbindir)"' -ggdb
-libmisc_a_SOURCES = getopt1.c getopt.c ippool.c lookup.c syserr.c tun.c
+libmisc_a_SOURCES = getopt1.c getopt.c ippool.c lookup.c tun.c debug.c
diff --git a/lib/debug.c b/lib/debug.c
new file mode 100644
index 0000000..b3850f9
--- /dev/null
+++ b/lib/debug.c
@@ -0,0 +1,34 @@
+/*
+ * (C) 2014 by Holger Hans Peter Freyther
+ */
+#include "syserr.h"
+
+#include <osmocom/core/utils.h>
+
+static const struct log_info_cat default_categories[] = {
+ [DIP] = {
+ .name = "DIP",
+ .description = "IP Pool and other groups",
+ .enabled = 1, .loglevel = LOGL_NOTICE,
+ },
+ [DTUN] = {
+ .name = "DTUN",
+ .description = "Tunnel interface",
+ .enabled = 1, .loglevel = LOGL_NOTICE,
+ },
+ [DGGSN] = {
+ .name = "DGGSN",
+ .description = "GGSN",
+ .enabled = 1, .loglevel = LOGL_NOTICE,
+ },
+ [DSGSN] = {
+ .name = "DSGSN",
+ .description = "SGSN Emulator",
+ .enabled = 1, .loglevel = LOGL_NOTICE,
+ },
+};
+
+const struct log_info log_info = {
+ .cat = default_categories,
+ .num_cat = ARRAY_SIZE(default_categories),
+};
diff --git a/lib/ippool.c b/lib/ippool.c
index 7ece1e8..1f79a77 100644
--- a/lib/ippool.c
+++ b/lib/ippool.c
@@ -13,7 +13,6 @@
#include <netinet/in.h> /* in_addr */
#include <stdlib.h> /* calloc */
#include <stdio.h> /* sscanf */
-#include <syslog.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
@@ -76,7 +75,7 @@
}
if (p != member) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"ippool_hashdel: Tried to delete member not in hash table");
return -1;
}
@@ -124,31 +123,31 @@
break;
case 5:
if (m1 > 32) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0, "Invalid mask");
+ SYS_ERR(DIP, LOGL_ERROR, 0, "Invalid mask");
return -1; /* Invalid mask */
}
mask->s_addr = htonl(0xffffffff << (32 - m1));
break;
case 8:
if (m1 >= 256 || m2 >= 256 || m3 >= 256 || m4 >= 256) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0, "Invalid mask");
+ SYS_ERR(DIP, LOGL_ERROR, 0, "Invalid mask");
return -1; /* Wrong mask format */
}
m = m1 * 0x1000000 + m2 * 0x10000 + m3 * 0x100 + m4;
for (masklog = 0; ((1 << masklog) < ((~m) + 1)); masklog++) ;
if (((~m) + 1) != (1 << masklog)) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0, "Invalid mask");
+ SYS_ERR(DIP, LOGL_ERROR, 0, "Invalid mask");
return -1; /* Wrong mask format (not all ones followed by all zeros) */
}
mask->s_addr = htonl(m);
break;
default:
- sys_err(LOG_ERR, __FILE__, __LINE__, 0, "Invalid mask");
+ SYS_ERR(DIP, LOGL_ERROR, 0, "Invalid mask");
return -1; /* Invalid mask */
}
if (a1 >= 256 || a2 >= 256 || a3 >= 256 || a4 >= 256) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"Wrong IP address format");
return -1;
} else
@@ -179,7 +178,7 @@
dynsize = 0;
} else {
if (ippool_aton(&addr, &mask, dyn, 0)) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"Failed to parse dynamic pool");
return -1;
}
@@ -205,7 +204,7 @@
statmask.s_addr = 0;
} else {
if (ippool_aton(&stataddr, &statmask, stat, 0)) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"Failed to parse static range");
return -1;
}
@@ -219,7 +218,7 @@
listsize = dynsize + statsize; /* Allocate space for static IP addresses */
if (!(*this = calloc(sizeof(struct ippool_t), 1))) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"Failed to allocate memory for ippool");
return -1;
}
@@ -231,7 +230,7 @@
(*this)->listsize += listsize;
if (!((*this)->member = calloc(sizeof(struct ippoolm_t), listsize))) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"Failed to allocate memory for members in ippool");
return -1;
}
@@ -249,7 +248,7 @@
if (!
((*this)->hash =
calloc(sizeof(struct ippoolm_t), (*this)->hashsize))) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"Failed to allocate memory for hash members in ippool");
return -1;
}
@@ -333,7 +332,7 @@
}
if (member)
*member = NULL;
- /*sys_err(LOG_ERR, __FILE__, __LINE__, 0, "Address could not be found"); */
+ /*SYS_ERR(DIP, LOGL_ERROR, 0, "Address could not be found"); */
return -1;
}
@@ -369,19 +368,19 @@
/* First check to see if this type of address is allowed */
if ((addr) && (addr->s_addr) && statip) { /* IP address given */
if (!this->allowstat) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"Static IP address not allowed");
return -1;
}
if ((addr->s_addr & this->statmask.s_addr) !=
this->stataddr.s_addr) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"Static out of range");
return -1;
}
} else {
if (!this->allowdyn) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"Dynamic IP address not allowed");
return -1;
}
@@ -407,7 +406,7 @@
/* If not found yet and dynamic IP then allocate dynamic IP */
if ((!p2) && (!statip)) {
if (!this->firstdyn) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"No more IP addresses available");
return -1;
} else
@@ -416,7 +415,7 @@
if (p2) { /* Was allocated from dynamic address pool */
if (p2->inuse) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"IP address allready in use");
return -1; /* Allready in use / Should not happen */
}
@@ -445,7 +444,7 @@
if ((addr) && (addr->s_addr) && (statip)) { /* IP address given */
if (!this->firststat) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"No more IP addresses available");
return -1; /* No more available */
} else
@@ -471,7 +470,7 @@
return 0; /* Success */
}
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"Could not allocate IP address");
return -1; /* Should never get here. TODO: Bad code */
}
@@ -483,13 +482,13 @@
(void)ippool_printaddr(this);
if (!member->inuse) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0, "Address not in use");
+ SYS_ERR(DIP, LOGL_ERROR, 0, "Address not in use");
return -1; /* Not in use: Should not happen */
}
switch (member->inuse) {
case 0: /* Not in use: Should not happen */
- sys_err(LOG_ERR, __FILE__, __LINE__, 0, "Address not in use");
+ SYS_ERR(DIP, LOGL_ERROR, 0, "Address not in use");
return -1;
case 1: /* Allocated from dynamic address space */
/* Insert into list of unused */
@@ -526,7 +525,7 @@
(void)ippool_printaddr(this);
return 0;
default: /* Should not happen */
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DIP, LOGL_ERROR, 0,
"Could not free IP address");
return -1;
}
diff --git a/lib/syserr.c b/lib/syserr.c
deleted file mode 100644
index 73b3f15..0000000
--- a/lib/syserr.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Syslog functions.
- * Copyright (C) 2003, 2004 Mondru AB.
- *
- * The contents of this file may be used under the terms of the GNU
- * General Public License Version 2, provided that the above copyright
- * notice and this permission notice is included in all copies or
- * substantial portions of the software.
- *
- */
-
-#include <stdarg.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <stdio.h>
-#include <syslog.h>
-#include <string.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include "syserr.h"
-
-static FILE* err_log;
-
-void sys_err_setlogfile(FILE* log)
-{
- err_log = log;
-}
-
-void sys_err(int pri, char *fn, int ln, int en, char *fmt, ...)
-{
- va_list args;
- char buf[SYSERR_MSGSIZE];
-
- va_start(args, fmt);
- vsnprintf(buf, SYSERR_MSGSIZE, fmt, args);
- va_end(args);
- buf[SYSERR_MSGSIZE - 1] = 0; /* Make sure it is null terminated */
- if (en) {
- if (err_log)
- fprintf(err_log, "%s: %d: %d (%s) %s\n",
- fn, ln, en, strerror(en), buf);
- syslog(pri, "%s: %d: %d (%s) %s", fn, ln, en, strerror(en),
- buf);
- } else {
- if (err_log)
- fprintf(err_log, "%s: %d: %s\n", fn, ln, buf);
- syslog(pri, "%s: %d: %s", fn, ln, buf);
- }
-}
-
diff --git a/lib/syserr.h b/lib/syserr.h
index 991549c..0c50a5f 100644
--- a/lib/syserr.h
+++ b/lib/syserr.h
@@ -12,10 +12,25 @@
#ifndef _SYSERR_H
#define _SYSERR_H
-#define SYSERR_MSGSIZE 256
+#include <osmocom/core/logging.h>
-void sys_err_setlogfile(FILE*);
+enum {
+ DIP,
+ DTUN,
+ DGGSN,
+ DSGSN,
+};
-void sys_err(int pri, char *filename, int en, int line, char *fmt, ...);
+#define SYS_ERR(sub, pri, en, fmt, args...) \
+ if (en) { \
+ logp2(sub, pri, __FILE__, __LINE__, 0, \
+ "errno=%d/%s " fmt "\n", en, strerror(en), \
+ ##args); \
+ } else { \
+ logp2(sub, pri, __FILE__, __LINE__, 0, \
+ fmt "\n", ##args); \
+ }
+
+extern const struct log_info log_info;
#endif /* !_SYSERR_H */
diff --git a/lib/tun.c b/lib/tun.c
index 43a02ee..94d92ef 100644
--- a/lib/tun.c
+++ b/lib/tun.c
@@ -16,7 +16,6 @@
*
*/
-#include <syslog.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
@@ -94,10 +93,10 @@
strncpy(ifr.ifr_name, this->devname, IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "socket() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed");
}
if (ioctl(fd, SIOCGIFINDEX, &ifr)) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "ioctl() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "ioctl() failed");
close(fd);
return -1;
}
@@ -117,10 +116,10 @@
strncpy(ifr.ifr_name, this->devname, IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ - 1] = 0; /* Make sure to terminate */
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "socket() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed");
}
if (ioctl(fd, SIOCSIFFLAGS, &ifr)) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"ioctl(SIOCSIFFLAGS) failed");
close(fd);
return -1;
@@ -162,7 +161,7 @@
tun_nlattr(&req.n, sizeof(req), RTA_GATEWAY, gateway, 4);
if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"socket() failed");
return -1;
}
@@ -172,7 +171,7 @@
local.nl_groups = 0;
if (bind(fd, (struct sockaddr*)&local, sizeof(local)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"bind() failed");
close(fd);
return -1;
@@ -180,21 +179,21 @@
addr_len = sizeof(local);
if (getsockname(fd, (struct sockaddr*)&local, &addr_len) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"getsockname() failed");
close(fd);
return -1;
}
if (addr_len != sizeof(local)) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DTUN, LOGL_ERROR, 0,
"Wrong address length %d", addr_len);
close(fd);
return -1;
}
if (local.nl_family != AF_NETLINK) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DTUN, LOGL_ERROR, 0,
"Wrong address family %d", local.nl_family);
close(fd);
return -1;
@@ -265,7 +264,7 @@
tun_nlattr(&req.n, sizeof(req), IFA_LOCAL, dstaddr, sizeof(dstaddr));
if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "socket() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed");
return -1;
}
@@ -274,28 +273,28 @@
local.nl_groups = 0;
if (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "bind() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "bind() failed");
close(fd);
return -1;
}
addr_len = sizeof(local);
if (getsockname(fd, (struct sockaddr *)&local, &addr_len) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"getsockname() failed");
close(fd);
return -1;
}
if (addr_len != sizeof(local)) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DTUN, LOGL_ERROR, 0,
"Wrong address length %d", addr_len);
close(fd);
return -1;
}
if (local.nl_family != AF_NETLINK) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ SYS_ERR(DTUN, LOGL_ERROR, 0,
"Wrong address family %d", local.nl_family);
close(fd);
return -1;
@@ -361,12 +360,12 @@
/* Create a channel to the NET kernel. */
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "socket() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed");
return -1;
}
if (ioctl(fd, SIOCAIFADDR, (void *)&areq) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"ioctl(SIOCAIFADDR) failed");
close(fd);
return -1;
@@ -381,7 +380,7 @@
if (!this->addrs) /* Use ioctl for first addr to make ping work */
return tun_setaddr(this, addr, dstaddr, netmask);
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"Setting multiple addresses not possible on Solaris");
return -1;
@@ -417,7 +416,7 @@
/* Create a channel to the NET kernel. */
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "socket() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed");
return -1;
}
@@ -427,10 +426,10 @@
sizeof(*addr));
if (ioctl(fd, SIOCSIFADDR, (void *)&ifr) < 0) {
if (errno != EEXIST) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"ioctl(SIOCSIFADDR) failed");
} else {
- sys_err(LOG_WARNING, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_NOTICE, errno,
"ioctl(SIOCSIFADDR): Address already exists");
}
close(fd);
@@ -443,7 +442,7 @@
memcpy(&((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_addr,
dstaddr, sizeof(*dstaddr));
if (ioctl(fd, SIOCSIFDSTADDR, (caddr_t) & ifr) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"ioctl(SIOCSIFDSTADDR) failed");
close(fd);
return -1;
@@ -468,7 +467,7 @@
#endif
if (ioctl(fd, SIOCSIFNETMASK, (void *)&ifr) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"ioctl(SIOCSIFNETMASK) failed");
close(fd);
return -1;
@@ -510,7 +509,7 @@
/* Create a channel to the NET kernel. */
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "socket() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed");
return -1;
}
@@ -525,14 +524,14 @@
if (delete) {
if (ioctl(fd, SIOCDELRT, (void *)&r) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"ioctl(SIOCDELRT) failed");
close(fd);
return -1;
}
} else {
if (ioctl(fd, SIOCADDRT, (void *)&r) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"ioctl(SIOCADDRT) failed");
close(fd);
return -1;
@@ -554,7 +553,7 @@
struct rt_msghdr *rtm;
if ((fd = socket(AF_ROUTE, SOCK_RAW, 0)) == -1) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "socket() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed");
return -1;
}
@@ -586,7 +585,7 @@
req.gate.sin_addr.s_addr = gateway->s_addr;
if (write(fd, rtm, rtm->rtm_msglen) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "write() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "write() failed");
close(fd);
return -1;
}
@@ -594,7 +593,7 @@
return 0;
#elif defined(__sun__)
- sys_err(LOG_WARNING, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_NOTICE, errno,
"Could not set up routing on Solaris. Please add route manually.");
return 0;
@@ -641,7 +640,7 @@
#endif
if (!(*tun = calloc(1, sizeof(struct tun_t)))) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "calloc() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "calloc() failed");
return EOF;
}
@@ -652,7 +651,7 @@
#if defined(__linux__)
/* Open the actual tun device */
if (((*tun)->fd = open("/dev/net/tun", O_RDWR)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "open() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "open() failed");
return -1;
}
@@ -661,7 +660,7 @@
memset(&ifr, 0, sizeof(ifr));
ifr.ifr_flags = IFF_TUN | IFF_NO_PI; /* Tun device, no packet info */
if (ioctl((*tun)->fd, TUNSETIFF, (void *)&ifr) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "ioctl() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "ioctl() failed");
close((*tun)->fd);
return -1;
}
@@ -683,7 +682,7 @@
break;
}
if ((*tun)->fd < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"Can't find tunnel device");
return -1;
}
@@ -702,7 +701,7 @@
/* Create a channel to the NET kernel. */
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "socket() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "socket() failed");
return -1;
}
@@ -715,45 +714,45 @@
#elif defined(__sun__)
if ((ip_fd = open("/dev/udp", O_RDWR, 0)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"Can't open /dev/udp");
return -1;
}
if (((*tun)->fd = open("/dev/tun", O_RDWR, 0)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"Can't open /dev/tun");
return -1;
}
/* Assign a new PPA and get its unit number. */
if ((ppa = ioctl((*tun)->fd, TUNNEWPPA, -1)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"Can't assign new interface");
return -1;
}
if ((if_fd = open("/dev/tun", O_RDWR, 0)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"Can't open /dev/tun (2)");
return -1;
}
if (ioctl(if_fd, I_PUSH, "ip") < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"Can't push IP module");
return -1;
}
/* Assign ppa according to the unit number returned by tun device */
if (ioctl(if_fd, IF_UNITSEL, (char *)&ppa) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "Can't set PPA %d",
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "Can't set PPA %d",
ppa);
return -1;
}
/* Link the two streams */
if ((muxid = ioctl(ip_fd, I_LINK, if_fd)) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"Can't link TUN device to IP");
return -1;
}
@@ -769,7 +768,7 @@
if (ioctl(ip_fd, SIOCSIFMUXID, &ifr) < 0) {
ioctl(ip_fd, I_PUNLINK, muxid);
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"Can't set multiplexor id");
return -1;
}
@@ -793,7 +792,7 @@
}
if (close(tun->fd)) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "close() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "close() failed");
}
/* TODO: For solaris we need to unlink streams */
@@ -818,7 +817,7 @@
int status;
if ((status = read(this->fd, buffer, sizeof(buffer))) <= 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "read() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "read() failed");
return -1;
}
@@ -836,7 +835,7 @@
sbuf.maxlen = PACKET_MAX;
sbuf.buf = buffer;
if (getmsg(this->fd, NULL, &sbuf, &f) < 0) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno, "getmsg() failed");
+ SYS_ERR(DTUN, LOGL_ERROR, errno, "getmsg() failed");
return -1;
}
@@ -885,7 +884,7 @@
buf[sizeof(buf) - 1] = 0;
rc = system(buf);
if (rc == -1) {
- sys_err(LOG_ERR, __FILE__, __LINE__, errno,
+ SYS_ERR(DTUN, LOGL_ERROR, errno,
"Error executing command %s", buf);
return -1;
}