some fix for netbsd

This commit is contained in:
hyung-hwan 2019-12-31 07:15:38 +00:00
parent bd61380fa0
commit fffc474b9c
4 changed files with 31 additions and 27 deletions

View File

@ -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"),

View File

@ -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)

View File

@ -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 */

View File

@ -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); \