114 lines
3.3 KiB
C
114 lines
3.3 KiB
C
/******************************************************************************/
|
|
/* */
|
|
/* Copyright (c) International Business Machines Corp., 2006 */
|
|
/* */
|
|
/* This program is free software; you can redistribute it and/or modify */
|
|
/* it under the terms of the GNU General Public License as published by */
|
|
/* the Free Software Foundation; either version 2 of the License, or */
|
|
/* (at your option) any later version. */
|
|
/* */
|
|
/* This program is distributed in the hope that it will be useful, */
|
|
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
|
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */
|
|
/* the GNU General Public License for more details. */
|
|
/* */
|
|
/* You should have received a copy of the GNU General Public License */
|
|
/* along with this program; if not, write to the Free Software */
|
|
/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
|
|
/* */
|
|
/******************************************************************************/
|
|
|
|
|
|
/*
|
|
* File:
|
|
* ns-mcast.h
|
|
*
|
|
* Description:
|
|
* Header file for multicast test.
|
|
* This file specifies structures and macors if missing
|
|
*
|
|
* Author:
|
|
* Mitsuru Chinen <mitch@jp.ibm.com>
|
|
*
|
|
* History:
|
|
* Apr 21 2006 - Created (Mitsuru Chinen)
|
|
*---------------------------------------------------------------------------*/
|
|
|
|
#ifndef _NS_MCAST_H
|
|
#define _NS_MCAST_H 1
|
|
|
|
#include <netinet/in.h>
|
|
#include <endian.h>
|
|
|
|
|
|
#ifndef MLD_LISTENER_QUERY
|
|
# define MLD_LISTENER_QUERY 130
|
|
#endif
|
|
|
|
|
|
/* group_req */
|
|
#ifndef MCAST_JOIN_GROUP
|
|
# define MCAST_JOIN_GROUP 42
|
|
# define MCAST_BLOCK_SOURCE 43
|
|
# define MCAST_UNBLOCK_SOURCE 44
|
|
# define MCAST_LEAVE_GROUP 45
|
|
|
|
struct group_req
|
|
{
|
|
uint32_t gr_interface;
|
|
struct sockaddr_storage gr_group;
|
|
};
|
|
|
|
#endif /* MCAST_JOIN_GROUP */
|
|
|
|
|
|
/* group_filter */
|
|
#ifndef MCAST_MSFILTER
|
|
# define MCAST_MSFILTER 48
|
|
# define MCAST_EXCLUDE 0
|
|
# define MCAST_INCLUDE 1
|
|
|
|
struct group_filter
|
|
{
|
|
uint32_t gf_interface;
|
|
struct sockaddr_storage gf_group;
|
|
uint32_t gf_fmode;
|
|
uint32_t gf_numsrc;
|
|
struct sockaddr_storage gf_slist[1];
|
|
};
|
|
|
|
#define GROUP_FILTER_SIZE(numsrc) \
|
|
(sizeof(struct group_filter) - sizeof(struct sockaddr_storage) \
|
|
+ (numsrc) * sizeof(struct sockaddr_storage))
|
|
|
|
#endif /* MCAST_MSFILTER */
|
|
|
|
#ifndef IGMP_ALL_HOSTS
|
|
# define IGMP_ALL_HOSTS htonl(0xE0000001L)
|
|
#endif
|
|
|
|
#ifndef IGMPV3_HOST_MEMBERSHIP_REPORT
|
|
struct igmpv3_query {
|
|
uint8_t type;
|
|
uint8_t code;
|
|
uint16_t csum;
|
|
uint32_t group;
|
|
# if __BYTE_ORDER == __LITTLE_ENDIAN
|
|
uint8_t qrv:3;
|
|
uint8_t suppress:1;
|
|
uint8_t resv:4;
|
|
# elif __BYTE_ORDER == __BIG_ENDIAN
|
|
uint8_t resv:4;
|
|
uint8_t suppress:1;
|
|
uint8_t qrv:3;
|
|
# else
|
|
# error "Failed to detect endian"
|
|
#endif
|
|
uint8_t qqic;
|
|
uint16_t nsrcs;
|
|
uint32_t srcs[0];
|
|
};
|
|
#endif /* IGMPV3_HOST_MEMBERSHIP_REPORT */
|
|
|
|
#endif /* _NS_MCAST_H */
|