{"id":542,"date":"2012-10-18T11:11:10","date_gmt":"2012-10-18T11:11:10","guid":{"rendered":"https:\/\/raspberry-projects.com\/pi\/?p=542"},"modified":"2014-09-26T15:05:29","modified_gmt":"2014-09-26T15:05:29","slug":"read-local-network-interface-settings","status":"publish","type":"post","link":"https:\/\/raspberry-projects.com\/pi\/programming-in-c\/tcpip\/read-local-network-interface-settings","title":{"rendered":"Read Local Network Adaptors"},"content":{"rendered":"<h4>\nGet IP Address and Sunet Mask Of Each Network Interface<br \/>\n<\/h4>\n<pre>\r\n<code>\r\n\r\n#include &lt;stdio.h&gt;\r\n#include &lt;sys\/types.h&gt;\r\n#include &lt;ifaddrs.h&gt;\r\n#include &lt;netinet\/in.h&gt;\r\n#include &lt;string.h&gt;\r\n#include &lt;arpa\/inet.h&gt;\r\n\r\n#define\tMAX_NETWORK_ADAPTORS\t\t\t\t\t\t3\r\n#define\tMAX_ADAPTOR_NAME_LENGTH\t\t\t\t\t\t20\r\n\r\nBYTE found_network_adaptors_count;\r\nchar NetworkAdaptorName[MAX_NETWORK_ADAPTORS][MAX_ADAPTOR_NAME_LENGTH];\r\nchar NetworkAdaptorIpAddress[MAX_NETWORK_ADAPTORS][INET_ADDRSTRLEN];\r\nchar NetworkAdaptorSubnetMask[MAX_NETWORK_ADAPTORS][INET_ADDRSTRLEN];\r\n\r\n\r\n\/\/***************************************************\r\n\/\/***************************************************\r\n\/\/********** READ NETWORK ADAPTOR SETTINGS **********\r\n\/\/***************************************************\r\n\/\/***************************************************\r\nvoid network_read_network_adaptor_settings (void)\r\n{\r\n\tstruct ifaddrs * ifAddrStruct = NULL;\r\n\tstruct ifaddrs * ifa = NULL;\r\n\tvoid * tmpAddrPtr = NULL;\r\n\r\n\tfound_network_adaptors_count = 0;\r\n\r\n\t\/\/Get each network interface on this machine\r\n\tgetifaddrs(&amp;ifAddrStruct);\r\n\r\n\tfor (ifa = ifAddrStruct; ifa != NULL; ifa = ifa-&gt;ifa_next)\r\n\t{\r\n\t\t\/\/----- GET NEXT NETWORK INTERFACE ------\r\n\t\tif (ifa-&gt;ifa_addr-&gt;sa_family == AF_INET)\r\n\t\t{\r\n\t\t\t\/\/----- IPV4 ADDRESS ------\r\n\r\n\t\t\t\/\/GET IP ADDRESS\r\n\t\t\ttmpAddrPtr = &amp;((struct sockaddr_in *)ifa-&gt;ifa_addr)-&gt;sin_addr;\r\n\t\t\tchar IpAddressBuffer[INET_ADDRSTRLEN];\r\n\t\t\tinet_ntop(AF_INET, tmpAddrPtr, IpAddressBuffer, INET_ADDRSTRLEN);\r\n\t\t\tprintf(&quot;%s IPV4 Address %s\\n&quot;, ifa-&gt;ifa_name, IpAddressBuffer);\r\n\r\n\r\n\t\t\t\/\/GET SUBNET MASK\r\n\t\t\ttmpAddrPtr = &amp;((struct sockaddr_in *)ifa-&gt;ifa_netmask)-&gt;sin_addr;\r\n\t\t\tchar SnAddressBuffer[INET_ADDRSTRLEN];\r\n\t\t\tinet_ntop(AF_INET, tmpAddrPtr, SnAddressBuffer, INET_ADDRSTRLEN);\r\n\t\t\tprintf(&quot;%s Subnet Mask %s\\n&quot;, ifa-&gt;ifa_name, SnAddressBuffer);\r\n\r\n\t\t\tif (strncmp((const char*)&amp;IpAddressBuffer[0], &quot;127.0.0.1&quot;, 10) != 0)\r\n\t\t\t{\r\n\t\t\t\t\/\/----- NOT THE LOOPBACK ADDRESS - ADD TO OUR SETTINGS BUFFER -----\r\n\t\t\t\tif (found_network_adaptors_count &lt; MAX_NETWORK_ADAPTORS)\r\n\t\t\t\t{\r\n\t\t\t\t\tstrncpy(&amp;NetworkAdaptorName[found_network_adaptors_count][0], ifa-&gt;ifa_name, MAX_ADAPTOR_NAME_LENGTH);\r\n\t\t\t\t\tstrncpy(&amp;NetworkAdaptorIpAddress[found_network_adaptors_count][0], IpAddressBuffer, INET_ADDRSTRLEN);\r\n\t\t\t\t\tstrncpy(&amp;NetworkAdaptorSubnetMask[found_network_adaptors_count][0], SnAddressBuffer, INET_ADDRSTRLEN);\r\n\r\n\t\t\t\t\tfound_network_adaptors_count++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\telse if (ifa-&gt;ifa_addr-&gt;sa_family == AF_INET6)\r\n\t\t{\r\n\t\t\t\/\/----- IPV6 ADDRESS -----\r\n\r\n\t\t\t\/\/GET IP ADDRESS\r\n\t\t\ttmpAddrPtr = &amp;((struct sockaddr_in6 *)ifa-&gt;ifa_addr)-&gt;sin6_addr;\r\n\t\t\tchar addressBuffer[INET6_ADDRSTRLEN];\r\n\t\t\tinet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN);\r\n\r\n\t\t\tprintf(&quot;%s IPV6 Address %s\\n&quot;, ifa-&gt;ifa_name, addressBuffer);\r\n\t\t}\r\n\r\n\t} \/\/for (ifa = ifAddrStruct; ifa != NULL; ifa = ifa-&gt;ifa_next)\r\n\r\n\t\/\/Reclaim the storage used by getifaddrs\r\n\tif (ifAddrStruct != NULL)\r\n\t\tfreeifaddrs(ifAddrStruct);\r\n\r\n\treturn;\r\n}\r\n<\/code><\/pre>\n<p>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Get IP Address and Sunet Mask Of Each Network Interface #include &lt;stdio.h&gt; #include &lt;sys\/types.h&gt; #include &lt;ifaddrs.h&gt; #include &lt;netinet\/in.h&gt; #include &lt;string.h&gt; #include &lt;arpa\/inet.h&gt; #define MAX_NETWORK_ADAPTORS 3 #define MAX_ADAPTOR_NAME_LENGTH 20 BYTE found_network_adaptors_count; char NetworkAdaptorName[MAX_NETWORK_ADAPTORS][MAX_ADAPTOR_NAME_LENGTH]; char NetworkAdaptorIpAddress[MAX_NETWORK_ADAPTORS][INET_ADDRSTRLEN]; char NetworkAdaptorSubnetMask[MAX_NETWORK_ADAPTORS][INET_ADDRSTRLEN]; \/\/*************************************************** \/\/*************************************************** \/\/********** READ NETWORK ADAPTOR SETTINGS ********** \/\/*************************************************** \/\/*************************************************** void network_read_network_adaptor_settings (void) { struct ifaddrs * ifAddrStruct = [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31],"tags":[],"class_list":["post-542","post","type-post","status-publish","format-standard","hentry","category-tcpip"],"_links":{"self":[{"href":"https:\/\/raspberry-projects.com\/pi\/wp-json\/wp\/v2\/posts\/542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raspberry-projects.com\/pi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/raspberry-projects.com\/pi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/raspberry-projects.com\/pi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/raspberry-projects.com\/pi\/wp-json\/wp\/v2\/comments?post=542"}],"version-history":[{"count":7,"href":"https:\/\/raspberry-projects.com\/pi\/wp-json\/wp\/v2\/posts\/542\/revisions"}],"predecessor-version":[{"id":1778,"href":"https:\/\/raspberry-projects.com\/pi\/wp-json\/wp\/v2\/posts\/542\/revisions\/1778"}],"wp:attachment":[{"href":"https:\/\/raspberry-projects.com\/pi\/wp-json\/wp\/v2\/media?parent=542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/raspberry-projects.com\/pi\/wp-json\/wp\/v2\/categories?post=542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/raspberry-projects.com\/pi\/wp-json\/wp\/v2\/tags?post=542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}