Home | History | Annotate | Download | only in src
      1 /*
      2  * DO NOT EDIT THIS FILE. It was generated from linux/if.h.
      3  *
      4  * Copyright (c) 2013 The Chromium Authors. All rights reserved.
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  */
      8 
      9 /*
     10  * INET         An implementation of the TCP/IP protocol suite for the LINUX
     11  *              operating system.  INET is implemented using the  BSD Socket
     12  *              interface as the means of communication with the user level.
     13  *
     14  *              Global definitions for the INET interface module.
     15  *
     16  * Version:     @(#)if.h        1.0.2   04/18/93
     17  *
     18  * Authors:     Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988
     19  *              Ross Biro
     20  *              Fred N. van Kempen, <waltje (at) uWalt.NL.Mugnet.ORG>
     21  *
     22  *              This program is free software; you can redistribute it and/or
     23  *              modify it under the terms of the GNU General Public License
     24  *              as published by the Free Software Foundation; either version
     25  *              2 of the License, or (at your option) any later version.
     26  */
     27 
     28 #include <Python.h>
     29 #include <sys/ioctl.h>
     30 #include <netinet/in.h>
     31 #include <linux/if.h>
     32 
     33 void _init_linux_if_h(PyObject *m) {
     34   PyModule_AddIntMacro(m, IFNAMSIZ);
     35   PyModule_AddIntMacro(m, IFALIASZ);
     36 
     37   /**
     38    * enum net_device_flags - &struct net_device flags
     39    *
     40    * These are the &struct net_device flags, they can be set by drivers, the
     41    * kernel and some can be triggered by userspace. Userspace can query and
     42    * set these flags using userspace utilities but there is also a sysfs
     43    * entry available for all dev flags which can be queried and set. These flags
     44    * are shared for all types of net_devices. The sysfs entries are available
     45    * via /sys/class/net/<dev>/flags. Flags which can be toggled through sysfs
     46    * are annotated below, note that only a few flags can be toggled and some
     47    * other flags are always always preserved from the original net_device flags
     48    * even if you try to set them via sysfs. Flags which are always preserved
     49    * are kept under the flag grouping @IFF_VOLATILE. Flags which are __volatile__
     50    * are annotated below as such.
     51    *
     52    * You should have a pretty good reason to be extending these flags.
     53    *
     54    * @IFF_UP: interface is up. Can be toggled through sysfs.
     55    * @IFF_BROADCAST: broadcast address valid. Volatile.
     56    * @IFF_DEBUG: turn on debugging. Can be toggled through sysfs.
     57    * @IFF_LOOPBACK: is a loopback net. Volatile.
     58    * @IFF_POINTOPOINT: interface is has p-p link. Volatile.
     59    * @IFF_NOTRAILERS: avoid use of trailers. Can be toggled through sysfs.
     60    *      Volatile.
     61    * @IFF_RUNNING: interface RFC2863 OPER_UP. Volatile.
     62    * @IFF_NOARP: no ARP protocol. Can be toggled through sysfs. Volatile.
     63    * @IFF_PROMISC: receive all packets. Can be toggled through sysfs.
     64    * @IFF_ALLMULTI: receive all multicast packets. Can be toggled through
     65    *      sysfs.
     66    * @IFF_MASTER: master of a load balancer. Volatile.
     67    * @IFF_SLAVE: slave of a load balancer. Volatile.
     68    * @IFF_MULTICAST: Supports multicast. Can be toggled through sysfs.
     69    * @IFF_PORTSEL: can set media type. Can be toggled through sysfs.
     70    * @IFF_AUTOMEDIA: auto media select active. Can be toggled through sysfs.
     71    * @IFF_DYNAMIC: dialup device with changing addresses. Can be toggled
     72    *      through sysfs.
     73    * @IFF_LOWER_UP: driver signals L1 up. Volatile.
     74    * @IFF_DORMANT: driver signals dormant. Volatile.
     75    * @IFF_ECHO: echo sent packets. Volatile.
     76    */
     77   /* enum net_device_flags */
     78   PyModule_AddIntMacro(m, IFF_UP);
     79   PyModule_AddIntMacro(m, IFF_BROADCAST);
     80   PyModule_AddIntMacro(m, IFF_DEBUG);
     81   PyModule_AddIntMacro(m, IFF_LOOPBACK);
     82   PyModule_AddIntMacro(m, IFF_POINTOPOINT);
     83   PyModule_AddIntMacro(m, IFF_NOTRAILERS);
     84   PyModule_AddIntMacro(m, IFF_RUNNING);
     85   PyModule_AddIntMacro(m, IFF_NOARP);
     86   PyModule_AddIntMacro(m, IFF_PROMISC);
     87   PyModule_AddIntMacro(m, IFF_ALLMULTI);
     88   PyModule_AddIntMacro(m, IFF_MASTER);
     89   PyModule_AddIntMacro(m, IFF_SLAVE);
     90   PyModule_AddIntMacro(m, IFF_MULTICAST);
     91   PyModule_AddIntMacro(m, IFF_PORTSEL);
     92   PyModule_AddIntMacro(m, IFF_AUTOMEDIA);
     93   PyModule_AddIntMacro(m, IFF_DYNAMIC);
     94   PyModule_AddIntMacro(m, IFF_LOWER_UP);
     95   PyModule_AddIntMacro(m, IFF_DORMANT);
     96   PyModule_AddIntMacro(m, IFF_ECHO);
     97 
     98   PyModule_AddIntMacro(m, IFF_UP);
     99   PyModule_AddIntMacro(m, IFF_BROADCAST);
    100   PyModule_AddIntMacro(m, IFF_DEBUG);
    101   PyModule_AddIntMacro(m, IFF_LOOPBACK);
    102   PyModule_AddIntMacro(m, IFF_POINTOPOINT);
    103   PyModule_AddIntMacro(m, IFF_NOTRAILERS);
    104   PyModule_AddIntMacro(m, IFF_RUNNING);
    105   PyModule_AddIntMacro(m, IFF_NOARP);
    106   PyModule_AddIntMacro(m, IFF_PROMISC);
    107   PyModule_AddIntMacro(m, IFF_ALLMULTI);
    108   PyModule_AddIntMacro(m, IFF_MASTER);
    109   PyModule_AddIntMacro(m, IFF_SLAVE);
    110   PyModule_AddIntMacro(m, IFF_MULTICAST);
    111   PyModule_AddIntMacro(m, IFF_PORTSEL);
    112   PyModule_AddIntMacro(m, IFF_AUTOMEDIA);
    113   PyModule_AddIntMacro(m, IFF_DYNAMIC);
    114   PyModule_AddIntMacro(m, IFF_LOWER_UP);
    115   PyModule_AddIntMacro(m, IFF_DORMANT);
    116   PyModule_AddIntMacro(m, IFF_ECHO);
    117 
    118   PyModule_AddIntMacro(m, IFF_VOLATILE);
    119 
    120   PyModule_AddIntMacro(m, IF_GET_IFACE);
    121   PyModule_AddIntMacro(m, IF_GET_PROTO);
    122 
    123   /* For definitions see hdlc.h */
    124   PyModule_AddIntMacro(m, IF_IFACE_V35);
    125   PyModule_AddIntMacro(m, IF_IFACE_V24);
    126   PyModule_AddIntMacro(m, IF_IFACE_X21);
    127   PyModule_AddIntMacro(m, IF_IFACE_T1);
    128   PyModule_AddIntMacro(m, IF_IFACE_E1);
    129   PyModule_AddIntMacro(m, IF_IFACE_SYNC_SERIAL);
    130   PyModule_AddIntMacro(m, IF_IFACE_X21D);
    131 
    132   /* For definitions see hdlc.h */
    133   PyModule_AddIntMacro(m, IF_PROTO_HDLC);
    134   PyModule_AddIntMacro(m, IF_PROTO_PPP);
    135   PyModule_AddIntMacro(m, IF_PROTO_CISCO);
    136   PyModule_AddIntMacro(m, IF_PROTO_FR);
    137   PyModule_AddIntMacro(m, IF_PROTO_FR_ADD_PVC);
    138   PyModule_AddIntMacro(m, IF_PROTO_FR_DEL_PVC);
    139   PyModule_AddIntMacro(m, IF_PROTO_X25);
    140   PyModule_AddIntMacro(m, IF_PROTO_HDLC_ETH);
    141   PyModule_AddIntMacro(m, IF_PROTO_FR_ADD_ETH_PVC);
    142   PyModule_AddIntMacro(m, IF_PROTO_FR_DEL_ETH_PVC);
    143   PyModule_AddIntMacro(m, IF_PROTO_FR_PVC);
    144   PyModule_AddIntMacro(m, IF_PROTO_FR_ETH_PVC);
    145   PyModule_AddIntMacro(m, IF_PROTO_RAW);
    146 
    147   /* RFC 2863 operational status */
    148   PyModule_AddIntMacro(m, IF_OPER_UNKNOWN);
    149   PyModule_AddIntMacro(m, IF_OPER_NOTPRESENT);
    150   PyModule_AddIntMacro(m, IF_OPER_DOWN);
    151   PyModule_AddIntMacro(m, IF_OPER_LOWERLAYERDOWN);
    152   PyModule_AddIntMacro(m, IF_OPER_TESTING);
    153   PyModule_AddIntMacro(m, IF_OPER_DORMANT);
    154   PyModule_AddIntMacro(m, IF_OPER_UP);
    155 
    156   /* link modes */
    157   PyModule_AddIntMacro(m, IF_LINK_MODE_DEFAULT);
    158   PyModule_AddIntMacro(m, IF_LINK_MODE_DORMANT);
    159 }
    160