diff options
Diffstat (limited to 'compat')
-rw-r--r-- | compat/Makefile.am | 3 | ||||
-rw-r--r-- | compat/ether.c | 52 | ||||
-rw-r--r-- | compat/ether.h | 49 |
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 */ + |