diff options
Diffstat (limited to 'man7/netdevice.7')
-rw-r--r-- | man7/netdevice.7 | 449 |
1 files changed, 0 insertions, 449 deletions
diff --git a/man7/netdevice.7 b/man7/netdevice.7 deleted file mode 100644 index 9f9f002..0000000 --- a/man7/netdevice.7 +++ /dev/null @@ -1,449 +0,0 @@ -'\" t -.\" SPDX-License-Identifier: Linux-man-pages-1-para -.\" -.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>. -.\" -.\" $Id: netdevice.7,v 1.10 2000/08/17 10:09:54 ak Exp $ -.\" -.\" Modified, 2004-11-25, mtk, formatting and a few wording fixes -.\" -.\" Modified, 2011-11-02, <bidulock@openss7.org>, added many basic -.\" but missing ioctls, such as SIOCGIFADDR. -.\" -.TH netdevice 7 2023-10-31 "Linux man-pages 6.7" -.SH NAME -netdevice \- low-level access to Linux network devices -.SH SYNOPSIS -.nf -.B "#include <sys/ioctl.h>" -.B "#include <net/if.h>" -.fi -.SH DESCRIPTION -This man page describes the sockets interface which is used to configure -network devices. -.P -Linux supports some standard ioctls to configure network devices. -They can be used on any socket's file descriptor regardless of the -family or type. -Most of them pass an -.I ifreq -structure: -.P -.in +4n -.EX -struct ifreq { - char ifr_name[IFNAMSIZ]; /* Interface name */ - union { - struct sockaddr ifr_addr; - struct sockaddr ifr_dstaddr; - struct sockaddr ifr_broadaddr; - struct sockaddr ifr_netmask; - struct sockaddr ifr_hwaddr; - short ifr_flags; - int ifr_ifindex; - int ifr_metric; - int ifr_mtu; - struct ifmap ifr_map; - char ifr_slave[IFNAMSIZ]; - char ifr_newname[IFNAMSIZ]; - char *ifr_data; - }; -}; -.EE -.in -.P -.B AF_INET6 -is an exception. -It passes an -.I in6_ifreq -structure: -.P -.in +4n -.EX -struct in6_ifreq { - struct in6_addr ifr6_addr; - u32 ifr6_prefixlen; - int ifr6_ifindex; /* Interface index */ -}; -.EE -.in -.P -Normally, the user specifies which device to affect by setting -.I ifr_name -to the name of the interface or -.I ifr6_ifindex -to the index of the interface. -All other members of the structure may -share memory. -.SS Ioctls -If an ioctl is marked as privileged, then using it requires an effective -user ID of 0 or the -.B CAP_NET_ADMIN -capability. -If this is not the case, -.B EPERM -will be returned. -.TP -.B SIOCGIFNAME -Given the -.IR ifr_ifindex , -return the name of the interface in -.IR ifr_name . -This is the only ioctl which returns its result in -.IR ifr_name . -.TP -.B SIOCGIFINDEX -Retrieve the interface index of the interface into -.IR ifr_ifindex . -.TP -.B SIOCGIFFLAGS -.TQ -.B SIOCSIFFLAGS -Get or set the active flag word of the device. -.I ifr_flags -contains a bit mask of the following values: -.\" Do not right adjust text blocks in tables -.na -.TS -tab(:); -c s -l l. -Device flags -IFF_UP:Interface is running. -IFF_BROADCAST:Valid broadcast address set. -IFF_DEBUG:Internal debugging flag. -IFF_LOOPBACK:Interface is a loopback interface. -IFF_POINTOPOINT:Interface is a point-to-point link. -IFF_RUNNING:Resources allocated. -IFF_NOARP:T{ -No arp protocol, L2 destination address not set. -T} -IFF_PROMISC:Interface is in promiscuous mode. -IFF_NOTRAILERS:Avoid use of trailers. -IFF_ALLMULTI:Receive all multicast packets. -IFF_MASTER:Master of a load balancing bundle. -IFF_SLAVE:Slave of a load balancing bundle. -IFF_MULTICAST:Supports multicast -IFF_PORTSEL:Is able to select media type via ifmap. -IFF_AUTOMEDIA:Auto media selection active. -IFF_DYNAMIC:T{ -The addresses are lost when the interface goes down. -T} -IFF_LOWER_UP:Driver signals L1 up (since Linux 2.6.17) -IFF_DORMANT:Driver signals dormant (since Linux 2.6.17) -IFF_ECHO:Echo sent packets (since Linux 2.6.25) -.TE -.ad -.P -Setting the active flag word is a privileged operation, but any -process may read it. -.TP -.B SIOCGIFPFLAGS -.TQ -.B SIOCSIFPFLAGS -Get or set extended (private) flags for the device. -.I ifr_flags -contains a bit mask of the following values: -.TS -tab(:); -c s -l l. -Private flags -IFF_802_1Q_VLAN:Interface is 802.1Q VLAN device. -IFF_EBRIDGE:Interface is Ethernet bridging device. -IFF_SLAVE_INACTIVE:Interface is inactive bonding slave. -IFF_MASTER_8023AD:Interface is 802.3ad bonding master. -IFF_MASTER_ALB:Interface is balanced-alb bonding master. -IFF_BONDING:Interface is a bonding master or slave. -IFF_SLAVE_NEEDARP:Interface needs ARPs for validation. -IFF_ISATAP:Interface is RFC4214 ISATAP interface. -.TE -.P -Setting the extended (private) interface flags is a privileged operation. -.TP -.B SIOCGIFADDR -.TQ -.B SIOCSIFADDR -.TQ -.B SIOCDIFADDR -Get, set, or delete the address of the device using -.IR ifr_addr , -or -.I ifr6_addr -with -.IR ifr6_prefixlen . -Setting or deleting the interface address is a privileged operation. -For compatibility, -.B SIOCGIFADDR -returns only -.B AF_INET -addresses, -.B SIOCSIFADDR -accepts -.B AF_INET -and -.B AF_INET6 -addresses, and -.B SIOCDIFADDR -deletes only -.B AF_INET6 -addresses. -A -.B AF_INET -address can be deleted by setting it to zero via -.BR SIOCSIFADDR . -.TP -.B SIOCGIFDSTADDR -.TQ -.B SIOCSIFDSTADDR -Get or set the destination address of a point-to-point device using -.IR ifr_dstaddr . -For compatibility, only -.B AF_INET -addresses are accepted or returned. -Setting the destination address is a privileged operation. -.TP -.B SIOCGIFBRDADDR -.TQ -.B SIOCSIFBRDADDR -Get or set the broadcast address for a device using -.IR ifr_brdaddr . -For compatibility, only -.B AF_INET -addresses are accepted or returned. -Setting the broadcast address is a privileged operation. -.TP -.B SIOCGIFNETMASK -.TQ -.B SIOCSIFNETMASK -Get or set the network mask for a device using -.IR ifr_netmask . -For compatibility, only -.B AF_INET -addresses are accepted or returned. -Setting the network mask is a privileged operation. -.TP -.B SIOCGIFMETRIC -.TQ -.B SIOCSIFMETRIC -Get or set the metric of the device using -.IR ifr_metric . -This is currently not implemented; it sets -.I ifr_metric -to 0 if you attempt to read it and returns -.B EOPNOTSUPP -if you attempt to set it. -.TP -.B SIOCGIFMTU -.TQ -.B SIOCSIFMTU -Get or set the MTU (Maximum Transfer Unit) of a device using -.IR ifr_mtu . -Setting the MTU is a privileged operation. -Setting the MTU to -too small values may cause kernel crashes. -.TP -.B SIOCGIFHWADDR -.TQ -.B SIOCSIFHWADDR -Get or set the hardware address of a device using -.IR ifr_hwaddr . -The hardware address is specified in a struct -.IR sockaddr . -.I sa_family -contains the ARPHRD_* device type, -.I sa_data -the L2 hardware address starting from byte 0. -Setting the hardware address is a privileged operation. -.TP -.B SIOCSIFHWBROADCAST -Set the hardware broadcast address of a device from -.IR ifr_hwaddr . -This is a privileged operation. -.TP -.B SIOCGIFMAP -.TQ -.B SIOCSIFMAP -Get or set the interface's hardware parameters using -.IR ifr_map . -Setting the parameters is a privileged operation. -.IP -.in +4n -.EX -struct ifmap { - unsigned long mem_start; - unsigned long mem_end; - unsigned short base_addr; - unsigned char irq; - unsigned char dma; - unsigned char port; -}; -.EE -.in -.IP -The interpretation of the ifmap structure depends on the device driver -and the architecture. -.TP -.B SIOCADDMULTI -.TQ -.B SIOCDELMULTI -Add an address to or delete an address from the device's link layer -multicast filters using -.IR ifr_hwaddr . -These are privileged operations. -See also -.BR packet (7) -for an alternative. -.TP -.B SIOCGIFTXQLEN -.TQ -.B SIOCSIFTXQLEN -Get or set the transmit queue length of a device using -.IR ifr_qlen . -Setting the transmit queue length is a privileged operation. -.TP -.B SIOCSIFNAME -Changes the name of the interface specified in -.I ifr_name -to -.IR ifr_newname . -This is a privileged operation. -It is allowed only when the interface -is not up. -.TP -.B SIOCGIFCONF -Return a list of interface (network layer) addresses. -This currently -means only addresses of the -.B AF_INET -(IPv4) family for compatibility. -Unlike the others, this ioctl passes an -.I ifconf -structure: -.IP -.in +4n -.EX -struct ifconf { - int ifc_len; /* size of buffer */ - union { - char *ifc_buf; /* buffer address */ - struct ifreq *ifc_req; /* array of structures */ - }; -}; -.EE -.in -.IP -If -.I ifc_req -is NULL, -.B SIOCGIFCONF -returns the necessary buffer size in bytes -for receiving all available addresses in -.IR ifc_len . -Otherwise, -.I ifc_req -contains a pointer to an array of -.I ifreq -structures to be filled with all currently active L3 interface addresses. -.I ifc_len -contains the size of the array in bytes. -Within each -.I ifreq -structure, -.I ifr_name -will receive the interface name, and -.I ifr_addr -the address. -The actual number of bytes transferred is returned in -.IR ifc_len . -.IP -If the size specified by -.I ifc_len -is insufficient to store all the addresses, -the kernel will skip the exceeding ones and return success. -There is no reliable way of detecting this condition once it has occurred. -It is therefore recommended to either determine the necessary buffer size -beforehand by calling -.B SIOCGIFCONF -with -.I ifc_req -set to NULL, or to retry the call with a bigger buffer whenever -.I ifc_len -upon return differs by less than -.I sizeof(struct ifreq) -from its original value. -.IP -If an error occurs accessing the -.I ifconf -or -.I ifreq -structures, -.B EFAULT -will be returned. -.\" Slaving isn't supported in Linux 2.2 -.\" . -.\" .TP -.\" .B SIOCGIFSLAVE -.\" .TQ -.\" .B SIOCSIFSLAVE -.\" Get or set the slave device using -.\" .IR ifr_slave . -.\" Setting the slave device is a privileged operation. -.\" .P -.\" FIXME . add amateur radio stuff. -.P -Most protocols support their own ioctls to configure protocol-specific -interface options. -See the protocol man pages for a description. -For configuring IP addresses, see -.BR ip (7). -.P -In addition, some devices support private ioctls. -These are not described here. -.SH NOTES -.B SIOCGIFCONF -and the other ioctls that accept or return only -.B AF_INET -socket addresses -are IP-specific and perhaps should rather be documented in -.BR ip (7). -.P -The names of interfaces with no addresses or that don't have the -.B IFF_RUNNING -flag set can be found via -.IR /proc/net/dev . -.P -.B AF_INET6 -IPv6 addresses can be read from -.I /proc/net/if_inet6 -or via -.BR rtnetlink (7). -Adding a new IPv6 address and deleting an existing IPv6 address -can be done via -.B SIOCSIFADDR -and -.B SIOCDIFADDR -or via -.BR rtnetlink (7). -Retrieving or changing destination IPv6 addresses of a point-to-point -interface is possible only via -.BR rtnetlink (7). -.SH BUGS -glibc 2.1 is missing the -.I ifr_newname -macro in -.IR <net/if.h> . -Add the following to your program as a workaround: -.P -.in +4n -.EX -#ifndef ifr_newname -#define ifr_newname ifr_ifru.ifru_slave -#endif -.EE -.in -.SH SEE ALSO -.BR proc (5), -.BR capabilities (7), -.BR ip (7), -.BR rtnetlink (7) |