aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorAndrey Konovalov <andreyknvl@google.com>2017-04-07 16:06:11 +0200
committerAndrey Konovalov <andreyknvl@google.com>2017-04-07 16:15:16 +0200
commit0c82c1c3e78ca83e83fe816b87512ee69c237a4f (patch)
tree7b0f012d44312d4009cb4bf57710f1665a156c5f /sys
parent96adce017fc18e2da584bb22672bef9712578a69 (diff)
sys: add ipv4 arp ioctls
Diffstat (limited to 'sys')
-rw-r--r--sys/socket.txt4
-rw-r--r--sys/socket_inet.txt25
-rw-r--r--sys/socket_inet_amd64.const12
-rw-r--r--sys/socket_inet_arm64.const12
-rw-r--r--sys/socket_inet_ppc64le.const12
5 files changed, 63 insertions, 2 deletions
diff --git a/sys/socket.txt b/sys/socket.txt
index 988921d2e..03bd0079a 100644
--- a/sys/socket.txt
+++ b/sys/socket.txt
@@ -82,6 +82,7 @@ sockaddr [
nfc sockaddr_nfc
# TODO: AF_VSOCK
# TODO: AF_QIPCRTR
+ ethernet sockaddr_ethernet
generic sockaddr_generic
]
@@ -125,6 +126,7 @@ sockaddr_all [
nfc_llcp sockaddr_nfc_llcp
# TODO: AF_VSOCK
# TODO: AF_QIPCRTR
+ ethernet sockaddr_ethernet
generic sockaddr_all_generic
] [varlen]
@@ -204,7 +206,7 @@ sockopt_so_timestamping = SOF_TIMESTAMPING_TX_HARDWARE, SOF_TIMESTAMPING_TX_SOFT
# TODO: SIOCADDRT, SIOCDELRT, SIOCRTMSG
# TODO: ETHTOOL commands (SIOCETHTOOL, ...)
-# TODO: SIOCDARP, SIOCGARP, SIOCSARP, SIOCDRARP, SIOCGRARP, SIOCSRARP
+# TODO: SIOCDRARP, SIOCGRARP, SIOCSRARP
# TODO: SIOCGIFVLAN, SIOCSIFVLAN
# TODO: SIOCGSTAMP, SIOCGSTAMPNS
diff --git a/sys/socket_inet.txt b/sys/socket_inet.txt
index cae635dd8..d42c28ad1 100644
--- a/sys/socket_inet.txt
+++ b/sys/socket_inet.txt
@@ -4,6 +4,7 @@
include <linux/ip.h>
include <linux/ipv6.h>
include <linux/route.h>
+include <uapi/linux/if_arp.h>
include <uapi/linux/netfilter_ipv6/ip6_tables.h>
# IP sockets
@@ -190,8 +191,14 @@ ioctl$inet_SIOCADDRT(fd sock_in, cmd const[SIOCADDRT], arg ptr[in, rtentry_in])
ioctl$inet_SIOCDELRT(fd sock_in, cmd const[SIOCDELRT], arg ptr[in, rtentry_in])
ioctl$inet_SIOCRTMSG(fd sock_in, cmd const[SIOCRTMSG], arg ptr[in, rtentry_in])
+ioctl$inet_SIOCDARP(fd sock_in, cmd const[SIOCDARP], arg ptr[in, arpreq_in])
+ioctl$inet_SIOCGARP(fd sock_in, cmd const[SIOCGARP], arg ptr[inout, arpreq_in])
+ioctl$inet_SIOCSARP(fd sock_in, cmd const[SIOCSARP], arg ptr[in, arpreq_in])
+
# TODO: more here
+rt_flags = RTF_UP, RTF_GATEWAY, RTF_HOST, RTF_REINSTATE, RTF_DYNAMIC, RTF_MODIFIED, RTF_MTU, RTF_WINDOW, RTF_IRTT, RTF_REJECT
+
rtentry_in {
rt_pad1 int64
rt_dst sockaddr_in
@@ -208,4 +215,20 @@ rtentry_in {
rt_irtt int16
}
-rt_flags = RTF_UP, RTF_GATEWAY, RTF_HOST, RTF_REINSTATE, RTF_DYNAMIC, RTF_MODIFIED, RTF_MTU, RTF_WINDOW, RTF_IRTT, RTF_REJECT
+sockaddr_ethernet_family = ARPHRD_ETHER, ARPHRD_FDDI, ARPHRD_IEEE802
+
+sockaddr_ethernet {
+ sa_family flags[sockaddr_ethernet_family, int16]
+ sa_data mac_addr
+ pad array[const[0, int8], 8]
+}
+
+arp_flags = ATF_COM, ATF_PERM, ATF_PUBL, ATF_USETRAILERS, ATF_NETMASK, ATF_DONTPUB
+
+arpreq_in {
+ arp_pa sockaddr_in
+ arp_ha sockaddr_ethernet
+ arp_flags flags[arp_flags, int32]
+ arp_netmask sockaddr_in
+ arp_dev devname
+}
diff --git a/sys/socket_inet_amd64.const b/sys/socket_inet_amd64.const
index 3c0c2efe1..116e43ae3 100644
--- a/sys/socket_inet_amd64.const
+++ b/sys/socket_inet_amd64.const
@@ -1,5 +1,14 @@
# AUTOGENERATED FILE
AF_INET = 2
+ARPHRD_ETHER = 1
+ARPHRD_FDDI = 774
+ARPHRD_IEEE802 = 6
+ATF_COM = 2
+ATF_DONTPUB = 64
+ATF_NETMASK = 32
+ATF_PERM = 4
+ATF_PUBL = 8
+ATF_USETRAILERS = 16
IPPROTO_IP = 0
IP_ADD_MEMBERSHIP = 35
IP_ADD_SOURCE_MEMBERSHIP = 39
@@ -63,8 +72,11 @@ RTF_REJECT = 512
RTF_UP = 1
RTF_WINDOW = 128
SIOCADDRT = 35083
+SIOCDARP = 35155
SIOCDELRT = 35084
+SIOCGARP = 35156
SIOCRTMSG = 35085
+SIOCSARP = 35157
__NR_accept = 43
__NR_accept4 = 288
__NR_bind = 49
diff --git a/sys/socket_inet_arm64.const b/sys/socket_inet_arm64.const
index 8352659cc..aaba7ef8d 100644
--- a/sys/socket_inet_arm64.const
+++ b/sys/socket_inet_arm64.const
@@ -1,5 +1,14 @@
# AUTOGENERATED FILE
AF_INET = 2
+ARPHRD_ETHER = 1
+ARPHRD_FDDI = 774
+ARPHRD_IEEE802 = 6
+ATF_COM = 2
+ATF_DONTPUB = 64
+ATF_NETMASK = 32
+ATF_PERM = 4
+ATF_PUBL = 8
+ATF_USETRAILERS = 16
IPPROTO_IP = 0
IP_ADD_MEMBERSHIP = 35
IP_ADD_SOURCE_MEMBERSHIP = 39
@@ -63,8 +72,11 @@ RTF_REJECT = 512
RTF_UP = 1
RTF_WINDOW = 128
SIOCADDRT = 35083
+SIOCDARP = 35155
SIOCDELRT = 35084
+SIOCGARP = 35156
SIOCRTMSG = 35085
+SIOCSARP = 35157
__NR_accept = 202
__NR_accept4 = 242
__NR_bind = 200
diff --git a/sys/socket_inet_ppc64le.const b/sys/socket_inet_ppc64le.const
index 269450c18..238b647d8 100644
--- a/sys/socket_inet_ppc64le.const
+++ b/sys/socket_inet_ppc64le.const
@@ -1,5 +1,14 @@
# AUTOGENERATED FILE
AF_INET = 2
+ARPHRD_ETHER = 1
+ARPHRD_FDDI = 774
+ARPHRD_IEEE802 = 6
+ATF_COM = 2
+ATF_DONTPUB = 64
+ATF_NETMASK = 32
+ATF_PERM = 4
+ATF_PUBL = 8
+ATF_USETRAILERS = 16
IPPROTO_IP = 0
IP_ADD_MEMBERSHIP = 35
IP_ADD_SOURCE_MEMBERSHIP = 39
@@ -63,8 +72,11 @@ RTF_REJECT = 512
RTF_UP = 1
RTF_WINDOW = 128
SIOCADDRT = 35083
+SIOCDARP = 35155
SIOCDELRT = 35084
+SIOCGARP = 35156
SIOCRTMSG = 35085
+SIOCSARP = 35157
__NR_accept = 330
__NR_accept4 = 344
__NR_bind = 327