Fix FreeBSD issues
This commit is contained in:
parent
ef6715645d
commit
8f5a628b01
2 changed files with 19 additions and 9 deletions
|
@ -671,6 +671,9 @@ static inline void set_addr(void *p, uint32_t addr)
|
||||||
struct sockaddr_in* sin = p;
|
struct sockaddr_in* sin = p;
|
||||||
sin->sin_family = AF_INET;
|
sin->sin_family = AF_INET;
|
||||||
sin->sin_addr.s_addr = addr;
|
sin->sin_addr.s_addr = addr;
|
||||||
|
#ifdef NMRPFLASH_BSD
|
||||||
|
((struct sockaddr*)p)->sa_len = sizeof(struct sockaddr_in);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NMRPFLASH_WINDOWS
|
#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)
|
#else // NMRPFLASH_OSX (or any other BSD)
|
||||||
struct ifaliasreq ifra;
|
struct ifaliasreq ifra;
|
||||||
|
memset(&ifra, 0, sizeof(ifra));
|
||||||
strncpy(ifra.ifra_name, sock->intf, IFNAMSIZ);
|
strncpy(ifra.ifra_name, sock->intf, IFNAMSIZ);
|
||||||
|
|
||||||
set_addr(&ifra.ifra_addr, ipaddr);
|
set_addr(&ifra.ifra_addr, ipaddr);
|
||||||
set_addr(&ifra.ifra_mask, ipmask);
|
set_addr(&ifra.ifra_mask, ipmask);
|
||||||
//set_addr(&ifra.ifra_broadaddr, (ipaddr & ipmask) | ~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) {
|
if (ioctl(fd, add ? SIOCAIFADDR : SIOCDIFADDR, &ifra) != 0) {
|
||||||
perror(add ? "ioctl(SIOCAIFADDR)" : "ioctl(SIOCDIFADDR)");
|
perror(add ? "ioctl(SIOCAIFADDR)" : "ioctl(SIOCDIFADDR)");
|
||||||
|
|
23
nmrpd.h
23
nmrpd.h
|
@ -23,14 +23,21 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
#if defined(_WIN32) || defined(_WIN64)
|
||||||
#define NMRPFLASH_WINDOWS
|
# define NMRPFLASH_WINDOWS
|
||||||
#elif defined(__linux__)
|
#else
|
||||||
#define NMRPFLASH_LINUX
|
# define NMRPFLASH_UNIX
|
||||||
#elif defined(__APPLE__) && defined(__MACH__)
|
# if defined(__linux__)
|
||||||
#define NMRPFLASH_OSX
|
# define NMRPFLASH_LINUX
|
||||||
#elif defined(__unix__)
|
# elif defined(__APPLE__) && defined(__MACH__)
|
||||||
#define NMRPFLASH_UNIX
|
# define NMRPFLASH_OSX
|
||||||
#warning "nmrpflash is not fully supported on your operating system"
|
# 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
|
#endif
|
||||||
|
|
||||||
#ifndef NMRPFLASH_WINDOWS
|
#ifndef NMRPFLASH_WINDOWS
|
||||||
|
|
Loading…
Add table
Reference in a new issue