Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef _NET_IF_H
  2. #define _NET_IF_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <sys/socket.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. /* Standard interface flags. */
  10. #define IFF_UP          0x1             /* interface is up              */
  11. #define IFF_BROADCAST   0x2             /* broadcast address valid      */
  12. #define IFF_DEBUG       0x4             /* turn on debugging            */
  13. #define IFF_LOOPBACK    0x8             /* is a loopback net            */
  14. #define IFF_POINTOPOINT 0x10            /* interface is has p-p link    */
  15. #define IFF_NOTRAILERS  0x20            /* avoid use of trailers        */
  16. #define IFF_RUNNING     0x40            /* resources allocated          */
  17. #define IFF_NOARP       0x80            /* no ARP protocol              */
  18. #define IFF_PROMISC     0x100           /* receive all packets          */
  19. #define IFF_ALLMULTI    0x200           /* receive all multicast packets*/
  20.  
  21. #define IFF_MASTER      0x400           /* master of a load balancer    */
  22. #define IFF_SLAVE       0x800           /* slave of a load balancer     */
  23.  
  24. #define IFF_MULTICAST   0x1000          /* Supports multicast           */
  25.  
  26. #define IFF_VOLATILE    (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_MASTER|IFF_SLAVE|IFF_RUNNING)
  27.  
  28. #define IFF_PORTSEL     0x2000          /* can set media type           */
  29. #define IFF_AUTOMEDIA   0x4000          /* auto media select active     */
  30. #define IFF_DYNAMIC     0x8000          /* dialup device with changing addresses*/
  31.  
  32. struct ifmap {
  33.   unsigned long mem_start;
  34.   unsigned long mem_end;
  35.   unsigned short base_addr;
  36.   unsigned char irq;
  37.   unsigned char dma;
  38.   unsigned char port;
  39.   /* 3 bytes spare */
  40. };
  41.  
  42. struct ifreq {
  43. #define IFHWADDRLEN     6
  44. #define IFNAMSIZ        16
  45.   union
  46.   {
  47.     char        ifrn_name[IFNAMSIZ];            /* if name, e.g. "en0" */
  48.   } ifr_ifrn;
  49.   union {
  50.     struct sockaddr ifru_addr;
  51.     struct sockaddr ifru_dstaddr;
  52.     struct sockaddr ifru_broadaddr;
  53.     struct sockaddr ifru_netmask;
  54.     struct  sockaddr ifru_hwaddr;
  55.     short ifru_flags;
  56.     int ifru_ivalue;
  57.     int ifru_mtu;
  58.     struct ifmap ifru_map;
  59.     char ifru_slave[IFNAMSIZ];  /* Just fits the size */
  60.     char ifru_newname[IFNAMSIZ];
  61.     char* ifru_data;
  62.   } ifr_ifru;
  63. };
  64.  
  65. #define ifr_name        ifr_ifrn.ifrn_name      /* interface name       */
  66. #define ifr_hwaddr      ifr_ifru.ifru_hwaddr    /* MAC address          */
  67. #define ifr_addr        ifr_ifru.ifru_addr      /* address              */
  68. #define ifr_dstaddr     ifr_ifru.ifru_dstaddr   /* other end of p-p lnk */
  69. #define ifr_broadaddr   ifr_ifru.ifru_broadaddr /* broadcast address    */
  70. #define ifr_netmask     ifr_ifru.ifru_netmask   /* interface net mask   */
  71. #define ifr_flags       ifr_ifru.ifru_flags     /* flags                */
  72. #define ifr_metric      ifr_ifru.ifru_ivalue    /* metric               */
  73. #define ifr_mtu         ifr_ifru.ifru_mtu       /* mtu                  */
  74. #define ifr_map         ifr_ifru.ifru_map       /* device map           */
  75. #define ifr_slave       ifr_ifru.ifru_slave     /* slave device         */
  76. #define ifr_data        ifr_ifru.ifru_data      /* for use by interface */
  77. #define ifr_ifindex     ifr_ifru.ifru_ivalue    /* interface index      */
  78. #define ifr_bandwidth   ifr_ifru.ifru_ivalue    /* link bandwidth       */
  79. #define ifr_qlen        ifr_ifru.ifru_ivalue    /* Queue length         */
  80. #define ifr_newname     ifr_ifru.ifru_newname   /* New name             */
  81.  
  82. struct ifconf {
  83.   int ifc_len;                  /* size of buffer       */
  84.   union {
  85.     char *                      ifcu_buf;
  86.     struct      ifreq           *ifcu_req;
  87.   } ifc_ifcu;
  88. };
  89.  
  90. #define ifc_buf ifc_ifcu.ifcu_buf               /* buffer address       */
  91. #define ifc_req ifc_ifcu.ifcu_req               /* array of structures  */
  92.  
  93. unsigned int if_nametoindex (const char *ifname) __THROW;
  94. char *if_indextoname (unsigned int ifindex, char *ifname) __THROW;
  95.  
  96. struct if_nameindex {
  97.   unsigned int if_index;
  98.   char *if_name;
  99. };
  100.  
  101. struct if_nameindex* if_nameindex(void) __THROW;
  102. void if_freenameindex(struct if_nameindex* ptr) __THROW;
  103.  
  104. __END_DECLS
  105.  
  106. #endif
  107.