/*
 * INET                An implementation of the TCP/IP protocol suite for the LINUX
 *                operating system.  INET is implemented using the  BSD Socket
 *                interface as the means of communication with the user level.
 *
 *                Definitions of the socket-level I/O control calls.
 *
 * Version:        @(#)sockios.h        1.0.2        03/09/93
 *
 * Authors:        Ross Biro
 *                Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
 *
 *                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.
 */
#ifndef _LINUX_SOCKIOS_H
#define _LINUX_SOCKIOS_H

#include <asm/sockios.h>

/* Linux-specific socket ioctls */
#define SIOCINQ                FIONREAD
#define SIOCOUTQ        TIOCOUTQ

/* Routing table calls. */
#define SIOCADDRT        0x890B                /* add routing table entry        */
#define SIOCDELRT        0x890C                /* delete routing table entry        */
#define SIOCRTMSG        0x890D                /* call to routing system        */

/* Socket configuration controls. */
#define SIOCGIFNAME        0x8910                /* get iface name                */
#define SIOCSIFLINK        0x8911                /* set iface channel                */
#define SIOCGIFCONF        0x8912                /* get iface list                */
#define SIOCGIFFLAGS        0x8913                /* get flags                        */
#define SIOCSIFFLAGS        0x8914                /* set flags                        */
#define SIOCGIFADDR        0x8915                /* get PA address                */
#define SIOCSIFADDR        0x8916                /* set PA address                */
#define SIOCGIFDSTADDR        0x8917                /* get remote PA address        */
#define SIOCSIFDSTADDR        0x8918                /* set remote PA address        */
#define SIOCGIFBRDADDR        0x8919                /* get broadcast PA address        */
#define SIOCSIFBRDADDR        0x891a                /* set broadcast PA address        */
#define SIOCGIFNETMASK        0x891b                /* get network PA mask                */
#define SIOCSIFNETMASK        0x891c                /* set network PA mask                */
#define SIOCGIFMETRIC        0x891d                /* get metric                        */
#define SIOCSIFMETRIC        0x891e                /* set metric                        */
#define SIOCGIFMEM        0x891f                /* get memory address (BSD)        */
#define SIOCSIFMEM        0x8920                /* set memory address (BSD)        */
#define SIOCGIFMTU        0x8921                /* get MTU size                        */
#define SIOCSIFMTU        0x8922                /* set MTU size                        */
#define SIOCSIFNAME        0x8923                /* set interface name */
#define        SIOCSIFHWADDR        0x8924                /* set hardware address         */
#define SIOCGIFENCAP        0x8925                /* get/set encapsulations       */
#define SIOCSIFENCAP        0x8926                
#define SIOCGIFHWADDR        0x8927                /* Get hardware address                */
#define SIOCGIFSLAVE        0x8929                /* Driver slaving support        */
#define SIOCSIFSLAVE        0x8930
#define SIOCADDMULTI        0x8931                /* Multicast address lists        */
#define SIOCDELMULTI        0x8932
#define SIOCGIFINDEX        0x8933                /* name -> if_index mapping        */
#define SIOGIFINDEX        SIOCGIFINDEX        /* misprint compatibility :-)        */
#define SIOCSIFPFLAGS        0x8934                /* set/get extended flags set        */
#define SIOCGIFPFLAGS        0x8935
#define SIOCDIFADDR        0x8936                /* delete PA address                */
#define        SIOCSIFHWBROADCAST        0x8937        /* set hardware broadcast addr        */
#define SIOCGIFCOUNT        0x8938                /* get number of devices */

#define SIOCGIFBR        0x8940                /* Bridging support                */
#define SIOCSIFBR        0x8941                /* Set bridging options         */

#define SIOCGIFTXQLEN        0x8942                /* Get the tx queue length        */
#define SIOCSIFTXQLEN        0x8943                /* Set the tx queue length         */

/* SIOCGIFDIVERT was:        0x8944                Frame diversion support */
/* SIOCSIFDIVERT was:        0x8945                Set frame diversion options */

#define SIOCETHTOOL        0x8946                /* Ethtool interface                */

#define SIOCGMIIPHY        0x8947                /* Get address of MII PHY in use. */
#define SIOCGMIIREG        0x8948                /* Read MII PHY register.        */
#define SIOCSMIIREG        0x8949                /* Write MII PHY register.        */

#define SIOCWANDEV        0x894A                /* get/set netdev parameters        */

/* ARP cache control calls. */
                    /*  0x8950 - 0x8952  * obsolete calls, don't re-use */
#define SIOCDARP        0x8953                /* delete ARP table entry        */
#define SIOCGARP        0x8954                /* get ARP table entry                */
#define SIOCSARP        0x8955                /* set ARP table entry                */

/* RARP cache control calls. */
#define SIOCDRARP        0x8960                /* delete RARP table entry        */
#define SIOCGRARP        0x8961                /* get RARP table entry                */
#define SIOCSRARP        0x8962                /* set RARP table entry                */

/* Driver configuration calls */

#define SIOCGIFMAP        0x8970                /* Get device parameters        */
#define SIOCSIFMAP        0x8971                /* Set device parameters        */

/* DLCI configuration calls */

#define SIOCADDDLCI        0x8980                /* Create new DLCI device        */
#define SIOCDELDLCI        0x8981                /* Delete DLCI device                */

#define SIOCGIFVLAN        0x8982                /* 802.1Q VLAN support                */
#define SIOCSIFVLAN        0x8983                /* Set 802.1Q VLAN options         */

/* bonding calls */

#define SIOCBONDENSLAVE        0x8990                /* enslave a device to the bond */
#define SIOCBONDRELEASE 0x8991                /* release a slave from the bond*/
#define SIOCBONDSETHWADDR      0x8992        /* set the hw addr of the bond  */
#define SIOCBONDSLAVEINFOQUERY 0x8993   /* rtn info about slave state   */
#define SIOCBONDINFOQUERY      0x8994        /* rtn info about bond state    */
#define SIOCBONDCHANGEACTIVE   0x8995   /* update to a new active slave */
                        
/* bridge calls */
#define SIOCBRADDBR     0x89a0                /* create new bridge device     */
#define SIOCBRDELBR     0x89a1                /* remove bridge device         */
#define SIOCBRADDIF        0x89a2                /* add interface to bridge      */
#define SIOCBRDELIF        0x89a3                /* remove interface from bridge */

/* hardware time stamping: parameters in linux/net_tstamp.h */
#define SIOCSHWTSTAMP   0x89b0

/* Device private ioctl calls */

/*
 *        These 16 ioctls are available to devices via the do_ioctl() device
 *        vector. Each device should include this file and redefine these names
 *        as their own. Because these are device dependent it is a good idea
 *        _NOT_ to issue them to random objects and hope.
 *
 *        THESE IOCTLS ARE _DEPRECATED_ AND WILL DISAPPEAR IN 2.5.X -DaveM
 */
 
#define SIOCDEVPRIVATE        0x89F0        /* to 89FF */

/*
 *        These 16 ioctl calls are protocol private
 */
 
#define SIOCPROTOPRIVATE 0x89E0 /* to 89EF */
#endif        /* _LINUX_SOCKIOS_H */