/*
* DO NOT EDIT THIS FILE. It was generated from linux/if_tun.h.
*
* Copyright (c) 2013 The Chromium Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/*
* Universal TUN/TAP device driver.
* Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <Python.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <net/if.h>
#include <linux/if_tun.h>
void _init_linux_if_tun_h(PyObject *m) {
/* Read queue size */
PyModule_AddIntMacro(m, TUN_READQ_SIZE);
/* TUN device type flags: deprecated. Use IFF_TUN/IFF_TAP instead. */
PyModule_AddIntMacro(m, TUN_TUN_DEV);
PyModule_AddIntMacro(m, TUN_TAP_DEV);
PyModule_AddIntMacro(m, TUN_TYPE_MASK);
/* Ioctl defines */
PyModule_AddIntMacro(m, TUNSETNOCSUM);
PyModule_AddIntMacro(m, TUNSETDEBUG);
PyModule_AddIntMacro(m, TUNSETIFF);
PyModule_AddIntMacro(m, TUNSETPERSIST);
PyModule_AddIntMacro(m, TUNSETOWNER);
PyModule_AddIntMacro(m, TUNSETLINK);
PyModule_AddIntMacro(m, TUNSETGROUP);
PyModule_AddIntMacro(m, TUNGETFEATURES);
PyModule_AddIntMacro(m, TUNSETOFFLOAD);
PyModule_AddIntMacro(m, TUNSETTXFILTER);
PyModule_AddIntMacro(m, TUNGETIFF);
PyModule_AddIntMacro(m, TUNGETSNDBUF);
PyModule_AddIntMacro(m, TUNSETSNDBUF);
PyModule_AddIntMacro(m, TUNATTACHFILTER);
PyModule_AddIntMacro(m, TUNDETACHFILTER);
PyModule_AddIntMacro(m, TUNGETVNETHDRSZ);
PyModule_AddIntMacro(m, TUNSETVNETHDRSZ);
PyModule_AddIntMacro(m, TUNSETQUEUE);
PyModule_AddIntMacro(m, TUNSETIFINDEX);
PyModule_AddIntMacro(m, TUNGETFILTER);
PyModule_AddIntMacro(m, TUNSETVNETLE);
PyModule_AddIntMacro(m, TUNGETVNETLE);
/* TUNSETIFF ifr flags */
PyModule_AddIntMacro(m, IFF_TUN);
PyModule_AddIntMacro(m, IFF_TAP);
PyModule_AddIntMacro(m, IFF_NO_PI);
/* This flag has no real effect */
PyModule_AddIntMacro(m, IFF_ONE_QUEUE);
PyModule_AddIntMacro(m, IFF_VNET_HDR);
PyModule_AddIntMacro(m, IFF_TUN_EXCL);
PyModule_AddIntMacro(m, IFF_MULTI_QUEUE);
PyModule_AddIntMacro(m, IFF_ATTACH_QUEUE);
PyModule_AddIntMacro(m, IFF_DETACH_QUEUE);
/* read-only flag */
PyModule_AddIntMacro(m, IFF_PERSIST);
PyModule_AddIntMacro(m, IFF_NOFILTER);
/* Socket options */
PyModule_AddIntMacro(m, TUN_TX_TIMESTAMP);
/* Features for GSO (TUNSETOFFLOAD). */
PyModule_AddIntMacro(m, TUN_F_CSUM);
PyModule_AddIntMacro(m, TUN_F_TSO4);
PyModule_AddIntMacro(m, TUN_F_TSO6);
PyModule_AddIntMacro(m, TUN_F_TSO_ECN);
PyModule_AddIntMacro(m, TUN_F_UFO);
/* Protocol info prepended to the packets (when IFF_NO_PI is not set) */
PyModule_AddIntMacro(m, TUN_PKT_STRIP);
}