Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/compat
diff options
context:
space:
mode:
Diffstat (limited to 'compat')
-rw-r--r--compat/Makefile.am3
-rw-r--r--compat/ether.c52
-rw-r--r--compat/ether.h49
3 files changed, 103 insertions, 1 deletions
diff --git a/compat/Makefile.am b/compat/Makefile.am
index d71d087..601b65b 100644
--- a/compat/Makefile.am
+++ b/compat/Makefile.am
@@ -24,7 +24,8 @@ AM_CFLAGS = -fPIC
EXTRA_DIST = getopt_long.c getopt_long.h \
daemon.c daemon.h \
- pagectrl.c pagectrl.h
+ pagectrl.c pagectrl.h \
+ ether.c ether.h
libcompat_a_SOURCES = getpeercred.c getpeercred.h
libcompat_a_LIBADD = @LIBOBJS@
diff --git a/compat/ether.c b/compat/ether.c
new file mode 100644
index 0000000..1374f97
--- /dev/null
+++ b/compat/ether.c
@@ -0,0 +1,52 @@
+/*
+ ether.c - useful ethernet functions for systems lacking those
+
+ Copyright (C) 2008 Arthur de Jong
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA
+*/
+
+#include "config.h"
+
+#include <string.h>
+
+#include "ether.h"
+
+/* these functions are not really reentrant */
+
+#ifndef HAVE_ETHER_NTOA_R
+char *ether_ntoa_r(const struct ether_addr *addr,char *buf)
+{
+ char *tmp;
+ tmp=ether_ntoa(addr);
+ if (tmp==NULL)
+ return NULL;
+ strcpy(buf,tmp);
+ return buf;
+}
+#endif /* not HAVE_ETHER_NTOA_R */
+
+#ifndef HAVE_ETHER_ATON_R
+struct ether_addr *ether_aton_r(const char *asc,struct ether_addr *addr)
+{
+ struct ether_addr *tmp;
+ tmp=ether_aton(asc);
+ if (tmp==NULL)
+ return NULL;
+ memcpy(addr,tmp,sizeof(struct ether_addr));
+ return addr;
+}
+#endif /* not HAVE_ETHER_ATON_R */
diff --git a/compat/ether.h b/compat/ether.h
new file mode 100644
index 0000000..fc4a2ff
--- /dev/null
+++ b/compat/ether.h
@@ -0,0 +1,49 @@
+/*
+ ether.h - ethernet definitions for systems lacking those
+
+ Copyright (C) 2008 Arthur de Jong
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA
+*/
+
+#ifndef _COMPAT_ETHER_H
+#define _COMPAT_ETHER_H 1
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>
+#include <netinet/in.h>
+#include <netinet/if_ether.h>
+#ifdef HAVE_NETINET_ETHER_H
+#include <netinet/ether.h>
+#endif
+
+#ifndef HAVE_STRUCT_ETHER_ADDR
+struct ether_addr {
+ uint8_t ether_addr_octet[6];
+};
+#endif /* not HAVE_STRUCT_ETHER_ADDR */
+
+#ifndef HAVE_ENTHER_NTOA_R
+char *ether_ntoa_r(const struct ether_addr *addr,char *buf);
+#endif /* not HAVE_ENTHER_NTOA_R */
+
+#ifndef HAVE_ENTHER_NTOA_R
+struct ether_addr *ether_aton_r(const char *asc,struct ether_addr *addr);
+#endif /* not HAVE_ENTHER_NTOA_R */
+
+#endif /* not _COMPAT_ETHER_H */
+