linux/include/uapi/linux/sockios.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
   2/*
   3 * INET         An implementation of the TCP/IP protocol suite for the LINUX
   4 *              operating system.  INET is implemented using the  BSD Socket
   5 *              interface as the means of communication with the user level.
   6 *
   7 *              Definitions of the socket-level I/O control calls.
   8 *
   9 * Version:     @(#)sockios.h   1.0.2   03/09/93
  10 *
  11 * Authors:     Ross Biro
  12 *              Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  13 *
  14 *              This program is free software; you can redistribute it and/or
  15 *              modify it under the terms of the GNU General Public License
  16 *              as published by the Free Software Foundation; either version
  17 *              2 of the License, or (at your option) any later version.
  18 */
  19#ifndef _LINUX_SOCKIOS_H
  20#define _LINUX_SOCKIOS_H
  21
  22#include <asm/bitsperlong.h>
  23#include <asm/sockios.h>
  24
  25/* Linux-specific socket ioctls */
  26#define SIOCINQ         FIONREAD
  27#define SIOCOUTQ        TIOCOUTQ        /* output queue size (not sent + not acked) */
  28
  29#define SOCK_IOC_TYPE   0x89
  30
  31/*
  32 * the timeval/timespec data structure layout is defined by libc,
  33 * so we need to cover both possible versions on 32-bit.
  34 */
  35/* Get stamp (timeval) */
  36#define SIOCGSTAMP_NEW   _IOR(SOCK_IOC_TYPE, 0x06, long long[2])
  37/* Get stamp (timespec) */
  38#define SIOCGSTAMPNS_NEW _IOR(SOCK_IOC_TYPE, 0x07, long long[2])
  39
  40#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
  41/* on 64-bit and x32, avoid the ?: operator */
  42#define SIOCGSTAMP      SIOCGSTAMP_OLD
  43#define SIOCGSTAMPNS    SIOCGSTAMPNS_OLD
  44#else
  45#define SIOCGSTAMP      ((sizeof(struct timeval))  == 8 ? \
  46                         SIOCGSTAMP_OLD   : SIOCGSTAMP_NEW)
  47#define SIOCGSTAMPNS    ((sizeof(struct timespec)) == 8 ? \
  48                         SIOCGSTAMPNS_OLD : SIOCGSTAMPNS_NEW)
  49#endif
  50
  51/* Routing table calls. */
  52#define SIOCADDRT       0x890B          /* add routing table entry      */
  53#define SIOCDELRT       0x890C          /* delete routing table entry   */
  54#define SIOCRTMSG       0x890D          /* unused                       */
  55
  56/* Socket configuration controls. */
  57#define SIOCGIFNAME     0x8910          /* get iface name               */
  58#define SIOCSIFLINK     0x8911          /* set iface channel            */
  59#define SIOCGIFCONF     0x8912          /* get iface list               */
  60#define SIOCGIFFLAGS    0x8913          /* get flags                    */
  61#define SIOCSIFFLAGS    0x8914          /* set flags                    */
  62#define SIOCGIFADDR     0x8915          /* get PA address               */
  63#define SIOCSIFADDR     0x8916          /* set PA address               */
  64#define SIOCGIFDSTADDR  0x8917          /* get remote PA address        */
  65#define SIOCSIFDSTADDR  0x8918          /* set remote PA address        */
  66#define SIOCGIFBRDADDR  0x8919          /* get broadcast PA address     */
  67#define SIOCSIFBRDADDR  0x891a          /* set broadcast PA address     */
  68#define SIOCGIFNETMASK  0x891b          /* get network PA mask          */
  69#define SIOCSIFNETMASK  0x891c          /* set network PA mask          */
  70#define SIOCGIFMETRIC   0x891d          /* get metric                   */
  71#define SIOCSIFMETRIC   0x891e          /* set metric                   */
  72#define SIOCGIFMEM      0x891f          /* get memory address (BSD)     */
  73#define SIOCSIFMEM      0x8920          /* set memory address (BSD)     */
  74#define SIOCGIFMTU      0x8921          /* get MTU size                 */
  75#define SIOCSIFMTU      0x8922          /* set MTU size                 */
  76#define SIOCSIFNAME     0x8923          /* set interface name */
  77#define SIOCSIFHWADDR   0x8924          /* set hardware address         */
  78#define SIOCGIFENCAP    0x8925          /* get/set encapsulations       */
  79#define SIOCSIFENCAP    0x8926          
  80#define SIOCGIFHWADDR   0x8927          /* Get hardware address         */
  81#define SIOCGIFSLAVE    0x8929          /* Driver slaving support       */
  82#define SIOCSIFSLAVE    0x8930
  83#define SIOCADDMULTI    0x8931          /* Multicast address lists      */
  84#define SIOCDELMULTI    0x8932
  85#define SIOCGIFINDEX    0x8933          /* name -> if_index mapping     */
  86#define SIOGIFINDEX     SIOCGIFINDEX    /* misprint compatibility :-)   */
  87#define SIOCSIFPFLAGS   0x8934          /* set/get extended flags set   */
  88#define SIOCGIFPFLAGS   0x8935
  89#define SIOCDIFADDR     0x8936          /* delete PA address            */
  90#define SIOCSIFHWBROADCAST      0x8937  /* set hardware broadcast addr  */
  91#define SIOCGIFCOUNT    0x8938          /* get number of devices */
  92
  93#define SIOCGIFBR       0x8940          /* Bridging support             */
  94#define SIOCSIFBR       0x8941          /* Set bridging options         */
  95
  96#define SIOCGIFTXQLEN   0x8942          /* Get the tx queue length      */
  97#define SIOCSIFTXQLEN   0x8943          /* Set the tx queue length      */
  98
  99/* SIOCGIFDIVERT was:   0x8944          Frame diversion support */
 100/* SIOCSIFDIVERT was:   0x8945          Set frame diversion options */
 101
 102#define SIOCETHTOOL     0x8946          /* Ethtool interface            */
 103
 104#define SIOCGMIIPHY     0x8947          /* Get address of MII PHY in use. */
 105#define SIOCGMIIREG     0x8948          /* Read MII PHY register.       */
 106#define SIOCSMIIREG     0x8949          /* Write MII PHY register.      */
 107
 108#define SIOCWANDEV      0x894A          /* get/set netdev parameters    */
 109
 110#define SIOCOUTQNSD     0x894B          /* output queue size (not sent only) */
 111#define SIOCGSKNS       0x894C          /* get socket network namespace */
 112
 113/* ARP cache control calls. */
 114                    /*  0x8950 - 0x8952  * obsolete calls, don't re-use */
 115#define SIOCDARP        0x8953          /* delete ARP table entry       */
 116#define SIOCGARP        0x8954          /* get ARP table entry          */
 117#define SIOCSARP        0x8955          /* set ARP table entry          */
 118
 119/* RARP cache control calls. */
 120#define SIOCDRARP       0x8960          /* delete RARP table entry      */
 121#define SIOCGRARP       0x8961          /* get RARP table entry         */
 122#define SIOCSRARP       0x8962          /* set RARP table entry         */
 123
 124/* Driver configuration calls */
 125
 126#define SIOCGIFMAP      0x8970          /* Get device parameters        */
 127#define SIOCSIFMAP      0x8971          /* Set device parameters        */
 128
 129/* DLCI configuration calls */
 130
 131#define SIOCADDDLCI     0x8980          /* Create new DLCI device       */
 132#define SIOCDELDLCI     0x8981          /* Delete DLCI device           */
 133
 134#define SIOCGIFVLAN     0x8982          /* 802.1Q VLAN support          */
 135#define SIOCSIFVLAN     0x8983          /* Set 802.1Q VLAN options      */
 136
 137/* bonding calls */
 138
 139#define SIOCBONDENSLAVE 0x8990          /* enslave a device to the bond */
 140#define SIOCBONDRELEASE 0x8991          /* release a slave from the bond*/
 141#define SIOCBONDSETHWADDR      0x8992   /* set the hw addr of the bond  */
 142#define SIOCBONDSLAVEINFOQUERY 0x8993   /* rtn info about slave state   */
 143#define SIOCBONDINFOQUERY      0x8994   /* rtn info about bond state    */
 144#define SIOCBONDCHANGEACTIVE   0x8995   /* update to a new active slave */
 145                        
 146/* bridge calls */
 147#define SIOCBRADDBR     0x89a0          /* create new bridge device     */
 148#define SIOCBRDELBR     0x89a1          /* remove bridge device         */
 149#define SIOCBRADDIF     0x89a2          /* add interface to bridge      */
 150#define SIOCBRDELIF     0x89a3          /* remove interface from bridge */
 151
 152/* hardware time stamping: parameters in linux/net_tstamp.h */
 153#define SIOCSHWTSTAMP   0x89b0          /* set and get config           */
 154#define SIOCGHWTSTAMP   0x89b1          /* get config                   */
 155
 156/* Device private ioctl calls */
 157
 158/*
 159 *      These 16 ioctls are available to devices via the do_ioctl() device
 160 *      vector. Each device should include this file and redefine these names
 161 *      as their own. Because these are device dependent it is a good idea
 162 *      _NOT_ to issue them to random objects and hope.
 163 *
 164 *      THESE IOCTLS ARE _DEPRECATED_ AND WILL DISAPPEAR IN 2.5.X -DaveM
 165 */
 166 
 167#define SIOCDEVPRIVATE  0x89F0  /* to 89FF */
 168
 169/*
 170 *      These 16 ioctl calls are protocol private
 171 */
 172 
 173#define SIOCPROTOPRIVATE 0x89E0 /* to 89EF */
 174#endif  /* _LINUX_SOCKIOS_H */
 175