OSDN Git Service

add netinet/igmp.h and multicast groups to netinet/in.h
authorRich Felker <dalias@aerifal.cx>
Fri, 20 Dec 2013 16:42:03 +0000 (11:42 -0500)
committerRich Felker <dalias@aerifal.cx>
Fri, 20 Dec 2013 16:42:03 +0000 (11:42 -0500)
based on patch by Timo Teräs.

include/netinet/igmp.h [new file with mode: 0644]
include/netinet/in.h

diff --git a/include/netinet/igmp.h b/include/netinet/igmp.h
new file mode 100644 (file)
index 0000000..bbe8206
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef _NETINET_IGMP_H
+#define _NETINET_IGMP_H
+
+#include <stdint.h>
+#include <netinet/in.h>
+
+struct igmp {
+       uint8_t igmp_type;
+       uint8_t igmp_code;
+       uint16_t igmp_cksum;
+       struct in_addr igmp_group;
+};
+
+#define IGMP_MINLEN                    8
+
+#define IGMP_MEMBERSHIP_QUERY          0x11
+#define IGMP_V1_MEMBERSHIP_REPORT      0x12
+#define IGMP_V2_MEMBERSHIP_REPORT      0x16
+#define IGMP_V2_LEAVE_GROUP            0x17
+
+#define IGMP_DVMRP                     0x13
+#define IGMP_PIM                       0x14
+#define IGMP_TRACE                     0x15
+
+#define IGMP_MTRACE_RESP               0x1e
+#define IGMP_MTRACE                    0x1f
+
+#define IGMP_MAX_HOST_REPORT_DELAY     10
+#define IGMP_TIMER_SCALE               10
+
+#define IGMP_DELAYING_MEMBER   1
+#define IGMP_IDLE_MEMBER       2
+#define IGMP_LAZY_MEMBER       3
+#define IGMP_SLEEPING_MEMBER   4
+#define IGMP_AWAKENING_MEMBER  5
+
+#define IGMP_v1_ROUTER         1
+#define IGMP_v2_ROUTER         2
+
+#define IGMP_HOST_MEMBERSHIP_QUERY     IGMP_MEMBERSHIP_QUERY
+#define IGMP_HOST_MEMBERSHIP_REPORT    IGMP_V1_MEMBERSHIP_REPORT
+#define IGMP_HOST_NEW_MEMBERSHIP_REPORT        IGMP_V2_MEMBERSHIP_REPORT
+#define IGMP_HOST_LEAVE_MESSAGE                IGMP_V2_LEAVE_GROUP
+
+#endif
index 8be51e8..db96144 100644 (file)
@@ -53,6 +53,11 @@ struct ipv6_mreq
 #define INADDR_NONE       ((in_addr_t) 0xffffffff)
 #define INADDR_LOOPBACK   ((in_addr_t) 0x7f000001)
 
+#define INADDR_UNSPEC_GROUP     ((in_addr_t) 0xe0000000)
+#define INADDR_ALLHOSTS_GROUP   ((in_addr_t) 0xe0000001)
+#define INADDR_ALLRTRS_GROUP    ((in_addr_t) 0xe0000002)
+#define INADDR_MAX_LOCAL_GROUP  ((in_addr_t) 0xe00000ff)
+
 #define IN6ADDR_ANY_INIT      { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
 #define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }