The first time I worked on IPv6 was in 2000 in my master’s degree thesis where I started an implementation of Mobile IP based on IPv6 in Linux Redhat. Over a decade later, IPv6 has not really taken off, even though we hear stories about the IPv4 address space running out and I have yet to see an embedded device using anything else than IPv4. APNIC Ran out of IPv4 However, this may be about the change as on the 15th of April 2011, Japan Network Information Center (JPNIC) announced that APNIC (Asia Pacific Network Information Centre) ran out of IPv4 addresses. They will still try to make it last longer by reusing previously allocated IPv4 and an “IPv4 address transfer system” whose details will be made available later. You can also see a chart based on IANA (Internet Assigned Numbers Authority) data that shows this is a problem right […]
C Code to get MAC Address and IP Address
Function in C to return the MAC Address:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/* Returns the MAC Address Params: int iNetType - 0: ethernet, 1: Wifi char chMAC[6] - MAC Address in binary format Returns: 0: success -1: Failure */ int getMACAddress(int iNetType, char chMAC[6]) { struct ifreq ifr; int sock; char *ifname=NULL; if (!iNetType) { ifname="eth0"; /* Ethernet */ } else { ifname="wlan0"; /* Wifi */ } sock=socket(AF_INET,SOCK_DGRAM,0); strcpy( ifr.ifr_name, ifname ); ifr.ifr_addr.sa_family = AF_INET; if (ioctl( sock, SIOCGIFHWADDR, &ifr ) < 0) { return -1; } memcpy(chMAC, ifr.ifr_hwaddr.sa_data, 6) close(sock); return 0; } |
Function in C to return the IP Address:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/* Returns the interface IP Address Params: int iNetType - 0: ethernet, 1: Wifi char *chIP - IP Address string Return: 0: success / -1: Failure */ int getIpAddress(int iNetType, char chIP[16]) { struct ifreq ifr; int sock = 0; sock = socket(AF_INET, SOCK_DGRAM, 0); if(iNetType == 0) { strcpy(ifr.ifr_name, "eth0"); } else { strcpy(ifr.ifr_name, "wlan0"); } if (ioctl(sock, SIOCGIFADDR, &ifr) < 0) { strcpy(chIP, "0.0.0.0"); return -1; } sprintf(chIP, "%s", inet_ntoa(((struct sockaddr_in *) &(ifr.ifr_addr))->sin_addr)); close(sock); return 0; } |
Jean-Luc Aufranc (CNXSoft)Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011. www.cnx-software.com
Finding a device IP Address
If you are developing software for an Ethernet (or Wifi) device, you’ll need to access the board for debugging and/or testing purpose. If your board does not have user interface or the serial port is not available, you’ll have to find the IP address (assuming it is using DHCP) before accessing the board thru telnet or ssh. A simple way to do that is to ping the broadcast address and check the arp table. > ping -b 192.168.0.255 WARNING: pinging broadcast address PING 192.168.0.255 (192.168.0.255) 56(84) bytes of data. 64 bytes from 192.168.0.246: icmp_seq=0 ttl=64 time=0.018 ms 64 bytes from 192.168.0.101: icmp_seq=0 ttl=64 time=0.217 ms (DUP!) 64 bytes from 192.168.0.246: icmp_seq=1 ttl=64 time=0.023 ms > arp -i eth0 arp -i eth1 Address HWtype HWaddress Flags Mask Iface 192.168.0.103 ether 00:50:FC:00:00:01 C eth1 192.168.0.109 ether 00:13:20:01:01:01 C eth1 If you cannot find your device, it may be configured to […]
Linux LAN Port Scanner
Just a short post to show how to scan the open ports of a remote machine on the local network: sudo nmap -sS 10.10.10.123 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2010-04-28 16:00 HKT Interesting ports on 10.10.10.123: (The 1660 ports scanned but not shown below are in state: filtered) PORT STATE SERVICE 69/tcp closed tftp 139/tcp open netbios-ssn 445/tcp open microsoft-ds MAC Address: 00:50:FC:B1:E9:70 (Edimax Technology CO.) Nmap finished: 1 IP address (1 host up) scanned in 25.252 seconds Jean-Luc Aufranc (CNXSoft)Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011. www.cnx-software.com