#include <arpa/inet.h>
#include <stdio.h>
/*
 * Just musing around, some useful little functions in the pocket...
 */

int main(int argc,char *argv[]) {
  unsigned char *p;

  // What ordering my computer uses ? Mine (i7) is little-endian, and yours ?
  int i = 0x01020304;
  p = (char *)&i;
  printf("%02x%02x%02x%02x\n",p[0],p[1],p[2],p[3]);

  // First convert dotted Internet address into NBO 32 bits struct
  struct in_addr addr;
  printf("inet_aton %d\n",inet_aton("172.23.128.25",&addr));
  // What is this number in HO ?
  printf("Network byte orderring %08x\n",addr.s_addr);
  // Exhibit bytes with NBO..
  p = (char *)&(addr.s_addr);
  printf("%02x.%02x.%02x.%02x\n",p[0],p[1],p[2],p[3]);

  // Ok, now try simpler? conversion
  in_addr_t addr2;
  addr2 = inet_addr("172.23.128.25");
  printf("Network byte ordering %08x\n",addr2);

  // Uh? Why would you like an HO address ???
  in_addr_t addr3;
  addr3 = inet_network("172.23.128.25");
  printf("Host byte ordering : %08x\n",addr3);

  // Woh! invert from NBO to string (char *)...
  char rep[INET_ADDRSTRLEN];
  inet_ntop(AF_INET,&addr,rep,INET_ADDRSTRLEN);
  printf("%s\n",rep);
  return 0;
}