some fix for netbsd
This commit is contained in:
parent
bd61380fa0
commit
fffc474b9c
@ -54,7 +54,6 @@ const hawk_ooch_t* hawk_dflerrstr (hawk_t* awk, hawk_errnum_t errnum)
|
|||||||
HAWK_T("interrupted"),
|
HAWK_T("interrupted"),
|
||||||
HAWK_T("broken pipe"),
|
HAWK_T("broken pipe"),
|
||||||
HAWK_T("in progress"),
|
HAWK_T("in progress"),
|
||||||
HAWK_T("no such device"),
|
|
||||||
HAWK_T("no handle"),
|
HAWK_T("no handle"),
|
||||||
HAWK_T("no child process"),
|
HAWK_T("no child process"),
|
||||||
HAWK_T("timed out"),
|
HAWK_T("timed out"),
|
||||||
|
@ -119,7 +119,7 @@ static int prefix_to_in6 (int prefix, struct in6_addr* in6)
|
|||||||
|
|
||||||
static HAWK_INLINE void copy_to_skad (struct sockaddr* sa, hawk_skad_t* skad)
|
static HAWK_INLINE void copy_to_skad (struct sockaddr* sa, hawk_skad_t* skad)
|
||||||
{
|
{
|
||||||
HAWK_MEMCPY (skad, sa, (HAWK_SIZEOF(*sa) > HAWK_SIZEOF(*skad)? HAWK_SIZEOF(*skad): HAWK_SIZEOF(*sa)));
|
HAWK_MEMCPY (skad, sa, HAWK_SIZEOF(*skad));
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
||||||
@ -284,7 +284,7 @@ int hawk_gem_getifcfg (hawk_gem_t* gem, hawk_ifcfg_t* cfg)
|
|||||||
#endif
|
#endif
|
||||||
if (head->name == HAWK_NULL) goto oops;
|
if (head->name == HAWK_NULL) goto oops;
|
||||||
|
|
||||||
copy_to_skad (&ifr->lifr_addr, &head->addr);
|
copy_to_skad ((struct sockaddr*)&ifr->lifr_addr, &head->addr);
|
||||||
|
|
||||||
hawk_copy_bcstr (ifrbuf.lifr_name, HAWK_COUNTOF(ifrbuf.lifr_name), ifr->lifr_name);
|
hawk_copy_bcstr (ifrbuf.lifr_name, HAWK_COUNTOF(ifrbuf.lifr_name), ifr->lifr_name);
|
||||||
if (ioctl(s, SIOCGLIFFLAGS, &ifrbuf) <= -1) goto sys_oops;
|
if (ioctl(s, SIOCGLIFFLAGS, &ifrbuf) <= -1) goto sys_oops;
|
||||||
@ -292,13 +292,13 @@ int hawk_gem_getifcfg (hawk_gem_t* gem, hawk_ifcfg_t* cfg)
|
|||||||
if (ifrbuf.lifr_flags & IFF_BROADCAST)
|
if (ifrbuf.lifr_flags & IFF_BROADCAST)
|
||||||
{
|
{
|
||||||
if (ioctl(s, SIOCGLIFBRDADDR, &ifrbuf) <= -1) goto sys_oops;
|
if (ioctl(s, SIOCGLIFBRDADDR, &ifrbuf) <= -1) goto sys_oops;
|
||||||
copy_to_skad (&ifrbuf.lifr_addr, &head->bcast);
|
copy_to_skad ((struct sockaddr*)&ifrbuf.lifr_addr, &head->bcast);
|
||||||
head->flags |= HAWK_IFCFG_BCAST;
|
head->flags |= HAWK_IFCFG_BCAST;
|
||||||
}
|
}
|
||||||
if (ifrbuf.lifr_flags & IFF_POINTOPOINT)
|
if (ifrbuf.lifr_flags & IFF_POINTOPOINT)
|
||||||
{
|
{
|
||||||
if (ioctl(s, SIOCGLIFDSTADDR, &ifrbuf) <= -1) goto sys_oops;
|
if (ioctl(s, SIOCGLIFDSTADDR, &ifrbuf) <= -1) goto sys_oops;
|
||||||
copy_to_skad (&ifrbuf.lifr_addr, &head->ptop);
|
copy_to_skad ((struct sockaddr*)&ifrbuf.lifr_addr, &head->ptop);
|
||||||
head->flags |= HAWK_IFCFG_PTOP;
|
head->flags |= HAWK_IFCFG_PTOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -306,7 +306,7 @@ int hawk_gem_getifcfg (hawk_gem_t* gem, hawk_ifcfg_t* cfg)
|
|||||||
head->index = ifrbuf.lifr_index;
|
head->index = ifrbuf.lifr_index;
|
||||||
|
|
||||||
if (ioctl(s, SIOCGLIFNETMASK, &ifrbuf) <= -1) goto sys_oops;
|
if (ioctl(s, SIOCGLIFNETMASK, &ifrbuf) <= -1) goto sys_oops;
|
||||||
copy_to_skad (&ifrbuf.lifr_addr, &head->mask);
|
copy_to_skad ((struct sockaddr*)&ifrbuf.lifr_addr, &head->mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
hawk_gem_freemem (gem, nwifs.ptr);
|
hawk_gem_freemem (gem, nwifs.ptr);
|
||||||
@ -464,20 +464,20 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i
|
|||||||
HAWK_MEMSET (cfg->ethw, 0, HAWK_SIZEOF(cfg->ethw));
|
HAWK_MEMSET (cfg->ethw, 0, HAWK_SIZEOF(cfg->ethw));
|
||||||
|
|
||||||
if (ioctl (s, SIOCGLIFADDR, &lifrbuf) >= 0)
|
if (ioctl (s, SIOCGLIFADDR, &lifrbuf) >= 0)
|
||||||
copy_to_skad (&lifrbuf.lifr_addr, &cfg->addr);
|
copy_to_skad ((struct sockaddr*)&lifrbuf.lifr_addr, &cfg->addr);
|
||||||
|
|
||||||
if (ioctl (s, SIOCGLIFNETMASK, &lifrbuf) >= 0)
|
if (ioctl (s, SIOCGLIFNETMASK, &lifrbuf) >= 0)
|
||||||
copy_to_skad (&lifrbuf.lifr_addr, &cfg->mask);
|
copy_to_skad ((struct sockaddr*)&lifrbuf.lifr_addr, &cfg->mask);
|
||||||
|
|
||||||
if ((cfg->flags & HAWK_IFCFG_BCAST) &&
|
if ((cfg->flags & HAWK_IFCFG_BCAST) &&
|
||||||
ioctl (s, SIOCGLIFBRDADDR, &lifrbuf) >= 0)
|
ioctl (s, SIOCGLIFBRDADDR, &lifrbuf) >= 0)
|
||||||
{
|
{
|
||||||
copy_to_skad (&lifrbuf.lifr_broadaddr, &cfg->bcast);
|
copy_to_skad ((struct sockaddr*)&lifrbuf.lifr_broadaddr, &cfg->bcast);
|
||||||
}
|
}
|
||||||
if ((cfg->flags & HAWK_IFCFG_PTOP) &&
|
if ((cfg->flags & HAWK_IFCFG_PTOP) &&
|
||||||
ioctl (s, SIOCGLIFDSTADDR, &lifrbuf) >= 0)
|
ioctl (s, SIOCGLIFDSTADDR, &lifrbuf) >= 0)
|
||||||
{
|
{
|
||||||
copy_to_skad (&lifrbuf.lifr_dstaddr, &cfg->ptop);
|
copy_to_skad ((struct sockaddr*)&lifrbuf.lifr_dstaddr, &cfg->ptop);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(SIOCGENADDR)
|
#if defined(SIOCGENADDR)
|
||||||
@ -551,31 +551,33 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i
|
|||||||
|
|
||||||
if (ioctl(s, SIOCGLIFADDR, &iflrbuf) >= 0)
|
if (ioctl(s, SIOCGLIFADDR, &iflrbuf) >= 0)
|
||||||
{
|
{
|
||||||
copy_to_skad (&iflrbuf.addr, &cfg->addr);
|
hawk_skad_alt_t* skad;
|
||||||
|
copy_to_skad ((struct sockaddr*)&iflrbuf.addr, &cfg->addr);
|
||||||
|
|
||||||
cfg->mask.type = HAWK_NWAD_IN6;
|
skad = (hawk_skad_alt_t*)&cfg->mask;
|
||||||
prefix_to_in6 (iflrbuf.prefixlen, &cfg->mask.u.in6.addr);
|
skad->in6.sin6_family = HAWK_AF_INET6;
|
||||||
|
prefix_to_in6 (iflrbuf.prefixlen, &skad->in6.sin6_addr);
|
||||||
|
|
||||||
if (cfg->flags & HAWK_IFCFG_PTOP)
|
if (cfg->flags & HAWK_IFCFG_PTOP)
|
||||||
copy_to_skad (&iflrbuf.dstaddr, &cfg->ptop);
|
copy_to_skad ((struct sockaddr*)&iflrbuf.dstaddr, &cfg->ptop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ioctl(s, SIOCGIFADDR, ifr) >= 0)
|
if (ioctl(s, SIOCGIFADDR, ifr) >= 0)
|
||||||
copy_to_skad (&ifr->ifr_addr, &cfg->addr);
|
copy_to_skad ((struct sockaddr*)&ifr->ifr_addr, &cfg->addr);
|
||||||
|
|
||||||
if (ioctl(s, SIOCGIFNETMASK, ifr) >= 0)
|
if (ioctl(s, SIOCGIFNETMASK, ifr) >= 0)
|
||||||
copy_to_skad (&ifr->ifr_addr, &cfg->mask);
|
copy_to_skad ((struct sockaddr*)&ifr->ifr_addr, &cfg->mask);
|
||||||
|
|
||||||
if ((cfg->flags & HAWK_IFCFG_BCAST) && ioctl(s, SIOCGIFBRDADDR, ifr) >= 0)
|
if ((cfg->flags & HAWK_IFCFG_BCAST) && ioctl(s, SIOCGIFBRDADDR, ifr) >= 0)
|
||||||
{
|
{
|
||||||
copy_to_skad (&ifr->ifr_broadaddr, &cfg->bcast);
|
copy_to_skad ((struct sockaddr*)&ifr->ifr_broadaddr, &cfg->bcast);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((cfg->flags & HAWK_IFCFG_PTOP) && ioctl(s, SIOCGIFDSTADDR, ifr) >= 0)
|
if ((cfg->flags & HAWK_IFCFG_PTOP) && ioctl(s, SIOCGIFDSTADDR, ifr) >= 0)
|
||||||
{
|
{
|
||||||
copy_to_skad (&ifr->ifr_dstaddr, &cfg->ptop);
|
copy_to_skad ((struct sockaddr*)&ifr->ifr_dstaddr, &cfg->ptop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -667,8 +669,8 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i
|
|||||||
hawk_clear_skad (&cfg->ptop);
|
hawk_clear_skad (&cfg->ptop);
|
||||||
HAWK_MEMSET (cfg->ethw, 0, HAWK_SIZEOF(cfg->ethw));
|
HAWK_MEMSET (cfg->ethw, 0, HAWK_SIZEOF(cfg->ethw));
|
||||||
|
|
||||||
if (ioctl(s, SIOCGIFADDR, ifr) >= 0) copy_to_skad (&ifr->ifr_addr, &cfg->addr);
|
if (ioctl(s, SIOCGIFADDR, ifr) >= 0) copy_to_skad ((struct sockaddr*)&ifr->ifr_addr, &cfg->addr);
|
||||||
if (ioctl(s, SIOCGIFNETMASK, ifr) >= 0) copy_to_skad (&ifr->ifr_addr, &cfg->mask);
|
if (ioctl(s, SIOCGIFNETMASK, ifr) >= 0) copy_to_skad ((struct sockaddr*)&ifr->ifr_addr, &cfg->mask);
|
||||||
|
|
||||||
#if defined(__linux)
|
#if defined(__linux)
|
||||||
if (hawk_skad_family(&cfg->addr) == HAWK_AF_UNSPEC && hawk_skad_family(&cfg->mask) == HAWK_AF_UNSPEC && cfg->type == HAWK_IFCFG_IN6)
|
if (hawk_skad_family(&cfg->addr) == HAWK_AF_UNSPEC && hawk_skad_family(&cfg->mask) == HAWK_AF_UNSPEC && cfg->type == HAWK_IFCFG_IN6)
|
||||||
@ -680,12 +682,12 @@ static int get_ifcfg (hawk_gem_t* gem, int s, hawk_ifcfg_t* cfg, struct ifreq* i
|
|||||||
|
|
||||||
if ((cfg->flags & HAWK_IFCFG_BCAST) && ioctl(s, SIOCGIFBRDADDR, ifr) >= 0)
|
if ((cfg->flags & HAWK_IFCFG_BCAST) && ioctl(s, SIOCGIFBRDADDR, ifr) >= 0)
|
||||||
{
|
{
|
||||||
copy_to_skad (&ifr->ifr_broadaddr, &cfg->bcast);
|
copy_to_skad ((struct sockaddr*)&ifr->ifr_broadaddr, &cfg->bcast);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((cfg->flags & HAWK_IFCFG_PTOP) && ioctl(s, SIOCGIFDSTADDR, ifr) >= 0)
|
if ((cfg->flags & HAWK_IFCFG_PTOP) && ioctl(s, SIOCGIFDSTADDR, ifr) >= 0)
|
||||||
{
|
{
|
||||||
copy_to_skad (&ifr->ifr_dstaddr, &cfg->ptop);
|
copy_to_skad ((struct sockaddr*)&ifr->ifr_dstaddr, &cfg->ptop);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(SIOCGIFHWADDR)
|
#if defined(SIOCGIFHWADDR)
|
||||||
|
@ -782,7 +782,6 @@ enum hawk_errnum_t
|
|||||||
HAWK_EINTR, /**< interrupted */
|
HAWK_EINTR, /**< interrupted */
|
||||||
HAWK_EPIPE, /**< broken pipe */
|
HAWK_EPIPE, /**< broken pipe */
|
||||||
HAWK_EINPROG, /**< in progress */
|
HAWK_EINPROG, /**< in progress */
|
||||||
HAWK_ENODEV, /**< no such device */
|
|
||||||
HAWK_ENOHND, /**< no handle */
|
HAWK_ENOHND, /**< no handle */
|
||||||
HAWK_ECHILD, /**< no child process */
|
HAWK_ECHILD, /**< no child process */
|
||||||
HAWK_ETMOUT, /**< timed out */
|
HAWK_ETMOUT, /**< timed out */
|
||||||
|
@ -149,11 +149,12 @@
|
|||||||
case EACCES: return __SYSERRNUM__(obj2, EACCES); \
|
case EACCES: return __SYSERRNUM__(obj2, EACCES); \
|
||||||
case EPERM: return __SYSERRNUM__(obj2, EPERM); \
|
case EPERM: return __SYSERRNUM__(obj2, EPERM); \
|
||||||
case ENOTDIR: return __SYSERRNUM__(obj2, ENOTDIR); \
|
case ENOTDIR: return __SYSERRNUM__(obj2, ENOTDIR); \
|
||||||
|
case ENXIO: \
|
||||||
|
case ENODEV: \
|
||||||
case ENOENT: return __SYSERRNUM__(obj2, ENOENT); \
|
case ENOENT: return __SYSERRNUM__(obj2, ENOENT); \
|
||||||
case EEXIST: return __SYSERRNUM__(obj2, EEXIST); \
|
case EEXIST: return __SYSERRNUM__(obj2, EEXIST); \
|
||||||
case EINTR: return __SYSERRNUM__(obj2, EINTR); \
|
case EINTR: return __SYSERRNUM__(obj2, EINTR); \
|
||||||
case EPIPE: return __SYSERRNUM__(obj2, EPIPE); \
|
case EPIPE: return __SYSERRNUM__(obj2, EPIPE); \
|
||||||
case ENODEV: return __SYSERRNUM__(obj2, ENODEV); \
|
|
||||||
case ECHILD: return __SYSERRNUM__(obj2, ECHILD); \
|
case ECHILD: return __SYSERRNUM__(obj2, ECHILD); \
|
||||||
case ETIMEDOUT: return __SYSERRNUM__(obj2, ETMOUT); \
|
case ETIMEDOUT: return __SYSERRNUM__(obj2, ETMOUT); \
|
||||||
case EINPROGRESS: return __SYSERRNUM__(obj2, EINPROG); \
|
case EINPROGRESS: return __SYSERRNUM__(obj2, EINPROG); \
|
||||||
@ -176,11 +177,12 @@
|
|||||||
case EACCES: return __SYSERRNUM__(obj2, EACCES); \
|
case EACCES: return __SYSERRNUM__(obj2, EACCES); \
|
||||||
case EPERM: return __SYSERRNUM__(obj2, EPERM); \
|
case EPERM: return __SYSERRNUM__(obj2, EPERM); \
|
||||||
case ENOTDIR: return __SYSERRNUM__(obj2, ENOTDIR); \
|
case ENOTDIR: return __SYSERRNUM__(obj2, ENOTDIR); \
|
||||||
|
case ENXIO: \
|
||||||
|
case ENODEV: \
|
||||||
case ENOENT: return __SYSERRNUM__(obj2, ENOENT); \
|
case ENOENT: return __SYSERRNUM__(obj2, ENOENT); \
|
||||||
case EEXIST: return __SYSERRNUM__(obj2, EEXIST); \
|
case EEXIST: return __SYSERRNUM__(obj2, EEXIST); \
|
||||||
case EINTR: return __SYSERRNUM__(obj2, EINTR); \
|
case EINTR: return __SYSERRNUM__(obj2, EINTR); \
|
||||||
case EPIPE: return __SYSERRNUM__(obj2, EPIPE); \
|
case EPIPE: return __SYSERRNUM__(obj2, EPIPE); \
|
||||||
case ENODEV: return __SYSERRNUM__(obj2, ENODEV); \
|
|
||||||
case ECHILD: return __SYSERRNUM__(obj2, ECHILD); \
|
case ECHILD: return __SYSERRNUM__(obj2, ECHILD); \
|
||||||
case ETIMEDOUT: return __SYSERRNUM__(obj2, ETMOUT); \
|
case ETIMEDOUT: return __SYSERRNUM__(obj2, ETMOUT); \
|
||||||
case EINPROGRESS: return __SYSERRNUM__(obj2, EINPROG); \
|
case EINPROGRESS: return __SYSERRNUM__(obj2, EINPROG); \
|
||||||
@ -202,11 +204,12 @@
|
|||||||
case EACCES: return __SYSERRNUM__(obj2, EACCES); \
|
case EACCES: return __SYSERRNUM__(obj2, EACCES); \
|
||||||
case EPERM: return __SYSERRNUM__(obj2, EPERM); \
|
case EPERM: return __SYSERRNUM__(obj2, EPERM); \
|
||||||
case ENOTDIR: return __SYSERRNUM__(obj2, ENOTDIR); \
|
case ENOTDIR: return __SYSERRNUM__(obj2, ENOTDIR); \
|
||||||
|
case ENXIO: \
|
||||||
|
case ENODEV: \
|
||||||
case ENOENT: return __SYSERRNUM__(obj2, ENOENT); \
|
case ENOENT: return __SYSERRNUM__(obj2, ENOENT); \
|
||||||
case EEXIST: return __SYSERRNUM__(obj2, EEXIST); \
|
case EEXIST: return __SYSERRNUM__(obj2, EEXIST); \
|
||||||
case EINTR: return __SYSERRNUM__(obj2, EINTR); \
|
case EINTR: return __SYSERRNUM__(obj2, EINTR); \
|
||||||
case EPIPE: return __SYSERRNUM__(obj2, EPIPE); \
|
case EPIPE: return __SYSERRNUM__(obj2, EPIPE); \
|
||||||
case ENODEV: return __SYSERRNUM__(obj2, ENODEV); \
|
|
||||||
case ECHILD: return __SYSERRNUM__(obj2, ECHILD); \
|
case ECHILD: return __SYSERRNUM__(obj2, ECHILD); \
|
||||||
case ETIMEDOUT: return __SYSERRNUM__(obj2, ETMOUT); \
|
case ETIMEDOUT: return __SYSERRNUM__(obj2, ETMOUT); \
|
||||||
case EINPROGRESS: return __SYSERRNUM__(obj2, EINPROG); \
|
case EINPROGRESS: return __SYSERRNUM__(obj2, EINPROG); \
|
||||||
@ -228,11 +231,12 @@
|
|||||||
case EACCES: return __SYSERRNUM__(obj2, EACCES); \
|
case EACCES: return __SYSERRNUM__(obj2, EACCES); \
|
||||||
case EPERM: return __SYSERRNUM__(obj2, EPERM); \
|
case EPERM: return __SYSERRNUM__(obj2, EPERM); \
|
||||||
case ENOTDIR: return __SYSERRNUM__(obj2, ENOTDIR); \
|
case ENOTDIR: return __SYSERRNUM__(obj2, ENOTDIR); \
|
||||||
|
case ENXIO: \
|
||||||
|
case ENODEV: \
|
||||||
case ENOENT: return __SYSERRNUM__(obj2, ENOENT); \
|
case ENOENT: return __SYSERRNUM__(obj2, ENOENT); \
|
||||||
case EEXIST: return __SYSERRNUM__(obj2, EEXIST); \
|
case EEXIST: return __SYSERRNUM__(obj2, EEXIST); \
|
||||||
case EINTR: return __SYSERRNUM__(obj2, EINTR); \
|
case EINTR: return __SYSERRNUM__(obj2, EINTR); \
|
||||||
case EPIPE: return __SYSERRNUM__(obj2, EPIPE); \
|
case EPIPE: return __SYSERRNUM__(obj2, EPIPE); \
|
||||||
case ENODEV: return __SYSERRNUM__(obj2, ENODEV); \
|
|
||||||
case ECHILD: return __SYSERRNUM__(obj2, ECHILD); \
|
case ECHILD: return __SYSERRNUM__(obj2, ECHILD); \
|
||||||
case ETIMEDOUT: return __SYSERRNUM__(obj2, ETMOUT); \
|
case ETIMEDOUT: return __SYSERRNUM__(obj2, ETMOUT); \
|
||||||
case EINPROGRESS: return __SYSERRNUM__(obj2, EINPROG); \
|
case EINPROGRESS: return __SYSERRNUM__(obj2, EINPROG); \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user