-#if HAVE_AFINET
- /* IPv4 address? */
- fd = get_socket_for_af(AF_INET);
- if (fd >= 0) {
- strcpy(ifr.ifr_name, ifname);
- ifr.ifr_addr.sa_family = AF_INET;
- if (ioctl(fd, SIOCGIFADDR, &ifr) == 0) {
- ife->has_ip = 1;
- ife->addr = ifr.ifr_addr;
- strcpy(ifr.ifr_name, ifname);
- if (ioctl(fd, SIOCGIFDSTADDR, &ifr) < 0)
- memset(&ife->dstaddr, 0, sizeof(struct sockaddr));
- else
- ife->dstaddr = ifr.ifr_dstaddr;
-
- strcpy(ifr.ifr_name, ifname);
- if (ioctl(fd, SIOCGIFBRDADDR, &ifr) < 0)
- memset(&ife->broadaddr, 0, sizeof(struct sockaddr));
- else
- ife->broadaddr = ifr.ifr_broadaddr;
-
- strcpy(ifr.ifr_name, ifname);
- if (ioctl(fd, SIOCGIFNETMASK, &ifr) < 0)
- memset(&ife->netmask, 0, sizeof(struct sockaddr));
- else
- ife->netmask = ifr.ifr_netmask;
- } else
- memset(&ife->addr, 0, sizeof(struct sockaddr));
- }
-#endif
-
-#if HAVE_AFATALK
- /* DDP address maybe ? */
- fd = get_socket_for_af(AF_APPLETALK);
- if (fd >= 0) {
- strcpy(ifr.ifr_name, ifname);
- if (ioctl(fd, SIOCGIFADDR, &ifr) == 0) {
- ife->ddpaddr = ifr.ifr_addr;
- ife->has_ddp = 1;
- }
- }
-#endif
-
-#if HAVE_AFIPX
- /* Look for IPX addresses with all framing types */
- fd = get_socket_for_af(AF_IPX);
- if (fd >= 0) {
- strcpy(ifr.ifr_name, ifname);
- if (!ipx_getaddr(fd, IPX_FRAME_ETHERII, &ifr)) {
- ife->has_ipx_bb = 1;
- ife->ipxaddr_bb = ifr.ifr_addr;
- }
- strcpy(ifr.ifr_name, ifname);
- if (!ipx_getaddr(fd, IPX_FRAME_SNAP, &ifr)) {
- ife->has_ipx_sn = 1;
- ife->ipxaddr_sn = ifr.ifr_addr;
- }
- strcpy(ifr.ifr_name, ifname);
- if (!ipx_getaddr(fd, IPX_FRAME_8023, &ifr)) {
- ife->has_ipx_e3 = 1;
- ife->ipxaddr_e3 = ifr.ifr_addr;
- }
- strcpy(ifr.ifr_name, ifname);
- if (!ipx_getaddr(fd, IPX_FRAME_8022, &ifr)) {
- ife->has_ipx_e2 = 1;
- ife->ipxaddr_e2 = ifr.ifr_addr;
- }
- }
-#endif
-
-#if HAVE_AFECONET
- /* Econet address maybe? */
- fd = get_socket_for_af(AF_ECONET);
- if (fd >= 0) {
- strcpy(ifr.ifr_name, ifname);
- if (ioctl(fd, SIOCGIFADDR, &ifr) == 0) {
- ife->ecaddr = ifr.ifr_addr;
- ife->has_econet = 1;
- }
+ strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
+ ifr.ifr_addr.sa_family = AF_INET;
+ memset(&ife->addr, 0, sizeof(struct sockaddr));
+ if (ioctl(skfd, SIOCGIFADDR, &ifr) == 0) {
+ ife->has_ip = 1;
+ ife->addr = ifr.ifr_addr;
+ strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
+ memset(&ife->dstaddr, 0, sizeof(struct sockaddr));
+ if (ioctl(skfd, SIOCGIFDSTADDR, &ifr) >= 0)
+ ife->dstaddr = ifr.ifr_dstaddr;
+
+ strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
+ memset(&ife->broadaddr, 0, sizeof(struct sockaddr));
+ if (ioctl(skfd, SIOCGIFBRDADDR, &ifr) >= 0)
+ ife->broadaddr = ifr.ifr_broadaddr;
+
+ strncpy_IFNAMSIZ(ifr.ifr_name, ifname);
+ memset(&ife->netmask, 0, sizeof(struct sockaddr));
+ if (ioctl(skfd, SIOCGIFNETMASK, &ifr) >= 0)
+ ife->netmask = ifr.ifr_netmask;