|
|
| version 1.10.10.2, 2014/11/17 22:38:09 | version 1.10.10.4, 2014/11/26 00:30:37 |
|---|---|
| Line 95 e_link_ntoa(const struct sockaddr_dl *sdl) | Line 95 e_link_ntoa(const struct sockaddr_dl *sdl) |
| } | } |
| /* | /* |
| * e_link_addr() - String ethernet address to link address | |
| * | |
| * @mac = ethernet address | |
| * @sdl = link address | |
| * return: -1 error or 0 ok | |
| */ | |
| int | |
| e_link_addr(const char *mac, struct sockaddr_dl * __restrict sdl) | |
| { | |
| if (!mac || !sdl) | |
| return -1; | |
| if (!sdl->sdl_len) | |
| sdl->sdl_len = sizeof(struct sockaddr_dl); | |
| link_addr(mac, sdl); | |
| return 0; | |
| } | |
| /* | |
| * e_ether_ntoa() - Convert ethernet address to string | * e_ether_ntoa() - Convert ethernet address to string |
| * | * |
| * @n = ethernet address structure, like struct ether_addr | * @n = ethernet address structure, like struct ether_addr |
| Line 490 e_get1stiface(char *szIface, int iflen) | Line 509 e_get1stiface(char *szIface, int iflen) |
| strlcpy(szIface, ifa->ifa_name, iflen); | strlcpy(szIface, ifa->ifa_name, iflen); |
| freeifaddrs(ifa); | freeifaddrs(ifa); |
| return 0; | return 0; |
| } | |
| /* | |
| * e_getifacebyname() - Get interface and make network structure | |
| * | |
| * @psIface = Interface, if =NULL first interface | |
| * @addr = Network address structure | |
| * return: NULL error or !=NULL network structure | |
| */ | |
| sockaddr_t * | |
| e_getifacebyname(const char *psIface, sockaddr_t * __restrict addr) | |
| { | |
| char szIface[64] = { [0 ... 63] = 0 }; | |
| struct ifaddrs *p, *ifa = NULL; | |
| if (!addr) | |
| return NULL; | |
| memset(addr, 0, sizeof(sockaddr_t)); | |
| getifaddrs(&ifa); | |
| strlcpy(szIface, psIface ? psIface : ifa->ifa_name, sizeof szIface); | |
| for (p = ifa; p && p->ifa_name; p++) | |
| if (p->ifa_name && !strcmp(p->ifa_name, szIface) && p->ifa_addr && | |
| p->ifa_addr->sa_family == AF_LINK) { | |
| memcpy(&addr->sdl, p->ifa_addr, sizeof(struct sockaddr_dl)); | |
| break; | |
| } | |
| freeifaddrs(ifa); | |
| return addr; | |
| } | |
| /* | |
| * e_getlinkbyname() - Get host ethernet address and make network structure | |
| * | |
| * @psHost = Host ethernet address | |
| * @addr = Network address structure | |
| * return: NULL error or !=NULL network structure | |
| */ | |
| sockaddr_t * | |
| e_getlinkbyname(const char *psHost, sockaddr_t * __restrict addr) | |
| { | |
| if (!addr) | |
| return NULL; | |
| else | |
| memset(addr, 0, sizeof(sockaddr_t)); | |
| addr->sdl.sdl_len = sizeof(struct sockaddr_dl); | |
| e_link_addr(psHost, &addr->sdl); | |
| return addr; | |
| } | } |