aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorAndrey Konovalov <andreyknvl@google.com>2017-02-13 15:46:28 +0100
committerAndrey Konovalov <andreyknvl@google.com>2017-02-13 15:46:28 +0100
commit876d4def98007d989396051cf6711addf5ee0225 (patch)
treed7009500f94d898b00cfa731fb799191a875dc41 /sys
parent006a7b79ad41372ce17e08c9c1c2356df2b80722 (diff)
sys: add igmp basic packet description
Diffstat (limited to 'sys')
-rw-r--r--sys/vnet.txt23
-rw-r--r--sys/vnet_amd64.const10
-rw-r--r--sys/vnet_arm64.const10
-rw-r--r--sys/vnet_ppc64le.const10
4 files changed, 53 insertions, 0 deletions
diff --git a/sys/vnet.txt b/sys/vnet.txt
index 26fa6ba3f..9a0fab70e 100644
--- a/sys/vnet.txt
+++ b/sys/vnet.txt
@@ -384,6 +384,7 @@ ipv4_payload [
udp udp_packet
icmp icmp_packet
dccp dccp_packet
+ igmp igmp_packet
] [varlen]
ipv6_payload [
@@ -860,3 +861,25 @@ dccp_packet {
header dccp_header
payload array[int8]
} [packed]
+
+################################################################################
+###################################### IGMP ####################################
+################################################################################
+
+# https://tools.ietf.org/html/rfc2236
+# https://tools.ietf.org/html/rfc3376#section-4
+
+include <uapi/linux/igmp.h>
+
+igmp_types = IGMP_HOST_MEMBERSHIP_QUERY, IGMP_HOST_MEMBERSHIP_REPORT, IGMP_DVMRP, IGMP_PIM, IGMP_TRACE, IGMPV2_HOST_MEMBERSHIP_REPORT, IGMP_HOST_LEAVE_MESSAGE, IGMPV3_HOST_MEMBERSHIP_REPORT, IGMP_MTRACE_RESP, IGMP_MTRACE
+
+igmp_packet {
+ type flags[igmp_types, int8]
+ mrtime int8
+ csum csum[parent, inet, int16be]
+ addr ipv4_addr
+ data array[int8]
+} [packed]
+
+# TODO: describe particular IGMP packets
+# TODO: open IGMP sockets from userspace
diff --git a/sys/vnet_amd64.const b/sys/vnet_amd64.const
index ec468bc1b..cf6a36f28 100644
--- a/sys/vnet_amd64.const
+++ b/sys/vnet_amd64.const
@@ -132,6 +132,16 @@ ICMP_SR_FAILED = 5
ICMP_TIMESTAMP = 13
ICMP_TIMESTAMPREPLY = 14
ICMP_TIME_EXCEEDED = 11
+IGMPV2_HOST_MEMBERSHIP_REPORT = 22
+IGMPV3_HOST_MEMBERSHIP_REPORT = 34
+IGMP_DVMRP = 19
+IGMP_HOST_LEAVE_MESSAGE = 23
+IGMP_HOST_MEMBERSHIP_QUERY = 17
+IGMP_HOST_MEMBERSHIP_REPORT = 18
+IGMP_MTRACE = 31
+IGMP_MTRACE_RESP = 30
+IGMP_PIM = 20
+IGMP_TRACE = 21
IPOPT_CIPSO = 134
IPOPT_END = 0
IPOPT_LSRR = 131
diff --git a/sys/vnet_arm64.const b/sys/vnet_arm64.const
index ec468bc1b..cf6a36f28 100644
--- a/sys/vnet_arm64.const
+++ b/sys/vnet_arm64.const
@@ -132,6 +132,16 @@ ICMP_SR_FAILED = 5
ICMP_TIMESTAMP = 13
ICMP_TIMESTAMPREPLY = 14
ICMP_TIME_EXCEEDED = 11
+IGMPV2_HOST_MEMBERSHIP_REPORT = 22
+IGMPV3_HOST_MEMBERSHIP_REPORT = 34
+IGMP_DVMRP = 19
+IGMP_HOST_LEAVE_MESSAGE = 23
+IGMP_HOST_MEMBERSHIP_QUERY = 17
+IGMP_HOST_MEMBERSHIP_REPORT = 18
+IGMP_MTRACE = 31
+IGMP_MTRACE_RESP = 30
+IGMP_PIM = 20
+IGMP_TRACE = 21
IPOPT_CIPSO = 134
IPOPT_END = 0
IPOPT_LSRR = 131
diff --git a/sys/vnet_ppc64le.const b/sys/vnet_ppc64le.const
index ec468bc1b..cf6a36f28 100644
--- a/sys/vnet_ppc64le.const
+++ b/sys/vnet_ppc64le.const
@@ -132,6 +132,16 @@ ICMP_SR_FAILED = 5
ICMP_TIMESTAMP = 13
ICMP_TIMESTAMPREPLY = 14
ICMP_TIME_EXCEEDED = 11
+IGMPV2_HOST_MEMBERSHIP_REPORT = 22
+IGMPV3_HOST_MEMBERSHIP_REPORT = 34
+IGMP_DVMRP = 19
+IGMP_HOST_LEAVE_MESSAGE = 23
+IGMP_HOST_MEMBERSHIP_QUERY = 17
+IGMP_HOST_MEMBERSHIP_REPORT = 18
+IGMP_MTRACE = 31
+IGMP_MTRACE_RESP = 30
+IGMP_PIM = 20
+IGMP_TRACE = 21
IPOPT_CIPSO = 134
IPOPT_END = 0
IPOPT_LSRR = 131