From 0c82c1c3e78ca83e83fe816b87512ee69c237a4f Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Fri, 7 Apr 2017 16:06:11 +0200 Subject: sys: add ipv4 arp ioctls --- sys/socket.txt | 4 +++- sys/socket_inet.txt | 25 ++++++++++++++++++++++++- sys/socket_inet_amd64.const | 12 ++++++++++++ sys/socket_inet_arm64.const | 12 ++++++++++++ sys/socket_inet_ppc64le.const | 12 ++++++++++++ 5 files changed, 63 insertions(+), 2 deletions(-) (limited to 'sys') 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 include include +include include # 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 -- cgit mrf-deployment