|
- /**************************************************************************
- *
- * Copyright 2008-2018 by Andrey Butok. FNET Community.
- *
- ***************************************************************************
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ***************************************************************************
- *
- * Private. IGMPv1/v2 protocol function definitions, data structures, etc.
- *
- ***************************************************************************/
-
- #ifndef _FNET_IGMP_H_
-
- #define _FNET_IGMP_H_
-
- #include "fnet.h"
-
- #if FNET_CFG_IGMP
-
- #include "fnet.h"
- #include "fnet_netif_prv.h"
- #include "fnet_prot.h"
-
- /************************************************************************
- * RFC2236: The Internet Group Management Protocol (IGMP) is used by IP hosts to
- * report their host group memberships to any immediately-neighboring
- * multicast routers.
- ************************************************************************/
-
- /************************************************************************
- * Definition of type and code field values.
- *************************************************************************/
-
- /************************************************************************
- * @internal
- * @brief IGMP message header.
- ************************************************************************
- *
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Type | Unused | Checksum |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Group Address |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *
- ************************************************************************/
-
- FNET_COMP_PACKED_BEGIN
- typedef struct
- {
- fnet_uint8_t type FNET_COMP_PACKED; /* Type.*/
- fnet_uint8_t max_resp_time FNET_COMP_PACKED; /* IGMPv1 Unused field, zeroed when sent, ignored when received.*/
- /* IGMPv2 Max Response Time (is meaningful only in Membership Query).*/
- /* NOTE: Current version of FNET ignores this parameter.*/
- fnet_uint16_t checksum FNET_COMP_PACKED; /* The checksum is the 16-bit one’s complement of the one’s
- * complement sum of the 8-octet IGMP message.*/
- fnet_ip4_addr_t group_addr FNET_COMP_PACKED; /* Group address field.*/
- } fnet_igmp_header_t;
- FNET_COMP_PACKED_END
-
- /* IGMP Types */
- #define IGMP_HEADER_TYPE_QUERY 0x11 /* Membership Query.*/
- #define IGMP_HEADER_TYPE_REPORT_V1 0x12 /* Version 1 Membership Report.*/
- #define IGMP_HEADER_TYPE_REPORT_V2 0x16 /* Version 2 Membership Report.*/
- #define IGMP_HEADER_TYPE_LEAVE_GROUP 0x17 /* Leave Group.*/
-
- extern fnet_prot_if_t fnet_igmp_prot_if;
-
- /************************************************************************
- * Function Prototypes
- *************************************************************************/
- #if defined(__cplusplus)
- extern "C" {
- #endif
-
- void _fnet_igmp_join( fnet_netif_t *netif, fnet_ip4_addr_t group_addr );
- void _fnet_igmp_leave( fnet_netif_t *netif, fnet_ip4_addr_t group_addr );
-
- #if defined(__cplusplus)
- }
- #endif
-
- #endif /* FNET_CFG_IGMP */
-
- #endif /* _FNET_IGMP_H_ */
|