Fix FreeBSD issues

This commit is contained in:
Live User 2016-11-19 14:54:02 +00:00
parent ef6715645d
commit 8f5a628b01
2 changed files with 19 additions and 9 deletions

View file

@ -671,6 +671,9 @@ static inline void set_addr(void *p, uint32_t addr)
struct sockaddr_in* sin = p;
sin->sin_family = AF_INET;
sin->sin_addr.s_addr = addr;
#ifdef NMRPFLASH_BSD
((struct sockaddr*)p)->sa_len = sizeof(struct sockaddr_in);
#endif
}
#ifndef NMRPFLASH_WINDOWS
@ -745,12 +748,12 @@ int ethsock_ip_add(struct ethsock *sock, uint32_t ipaddr, uint32_t ipmask, struc
}
#else // NMRPFLASH_OSX (or any other BSD)
struct ifaliasreq ifra;
memset(&ifra, 0, sizeof(ifra));
strncpy(ifra.ifra_name, sock->intf, IFNAMSIZ);
set_addr(&ifra.ifra_addr, ipaddr);
set_addr(&ifra.ifra_mask, ipmask);
//set_addr(&ifra.ifra_broadaddr, (ipaddr & ipmask) | ~ipmask);
memset(&ifra.ifra_broadaddr, 0, sizeof(ifra.ifra_broadaddr));
if (ioctl(fd, add ? SIOCAIFADDR : SIOCDIFADDR, &ifra) != 0) {
perror(add ? "ioctl(SIOCAIFADDR)" : "ioctl(SIOCDIFADDR)");

23
nmrpd.h
View file

@ -23,14 +23,21 @@
#include <stdbool.h>
#if defined(_WIN32) || defined(_WIN64)
#define NMRPFLASH_WINDOWS
#elif defined(__linux__)
#define NMRPFLASH_LINUX
#elif defined(__APPLE__) && defined(__MACH__)
#define NMRPFLASH_OSX
#elif defined(__unix__)
#define NMRPFLASH_UNIX
#warning "nmrpflash is not fully supported on your operating system"
# define NMRPFLASH_WINDOWS
#else
# define NMRPFLASH_UNIX
# if defined(__linux__)
# define NMRPFLASH_LINUX
# elif defined(__APPLE__) && defined(__MACH__)
# define NMRPFLASH_OSX
# define NMRPFLASH_BSD
# elif defined(__unix__)
# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
# define NMRPFLASH_BSD
# else
# warning "nmrpflash is not fully supported on your operating system"
# endif
# endif
#endif
#ifndef NMRPFLASH_WINDOWS