1 /* Hey Emacs use -*- mode: C -*- */
3 *------------------------------------------------------------------
4 * Copyright (c) 2017 Cisco and/or its affiliates.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *------------------------------------------------------------------
19 option version = "1.0.0";
20 import "vnet/ip/ip_types.api";
33 * Used by a 'host' to enable the reception/listening of packets for a specific
36 * For each socket on which IPMulticastListen has been invoked, the
37 * system records the desired multicast reception state for that socket.
38 * That state conceptually consists of a set of records of the form:
40 * (interface, multicast-address, filter-mode, source-list)
42 * The socket state evolves in response to each invocation of
43 * IPMulticastListen on the socket, as follows:
45 * o If the requested filter mode is INCLUDE *and* the requested source
46 * list is empty, then the entry corresponding to the requested
47 * interface and multicast address is deleted if present. If no such
48 * entry is present, the request is ignored.
50 * o If the requested filter mode is EXCLUDE *or* the requested source
51 * list is non-empty, then the entry corresponding to the requested
52 * interface and multicast address, if present, is changed to contain
53 * the requested filter mode and source list. If no such entry is
54 * present, a new entry is created, using the parameters specified in
57 * @param client_index - opaque cookie to identify the sender
58 * @param context - sender context, to match reply w/ request
59 * @param sw_if_index - interface sw index
60 * @param filter - filter mode
61 * @param saddr - source address
62 * @param gaddr - group address
64 typeonly define igmp_group
66 vl_api_filter_mode_t filter;
69 vl_api_ip4_address_t gaddr;
70 vl_api_ip4_address_t saddrs[n_srcs];
72 autoreply define igmp_listen
77 vl_api_igmp_group_t group;
82 * Used by a 'router' and 'host' to enable the reception of IGMP packets.
83 * For hosts this must be called once before igmp_listen.
85 * @param client_index - opaque cookie to identify the sender
86 * @param context - sender context, to match reply w/ request
87 * @param enable - if set, enable igmp messages on configuration
88 * @param mode - Host (1) or router (0) mode
89 * @param sw_if_index - interface sw index
91 autoreply define igmp_enable_disable
102 * @brief dump (S,G)s from interface
103 * @param client_index - opaque cookie to identify the sender
104 * @param context - sender context, to match reply w/ request
105 * @param sw_if_index - interface sw index (~0 for all)
116 * @brief igmp details
117 * @param context - sender context, to match reply w/ request
118 * @param sw_if_index - interface sw index
119 * @param saddr - source address
120 * @param gaddr - group address
127 vl_api_ip4_address_t saddr;
128 vl_api_ip4_address_t gaddr;
131 /** \brief remove all (S,G)s from an interface
132 @param client_index - opaque cookie to identify the sender
133 @param context - sender context, to match reply w/ request
134 @param sw_if_index - interface sw index
136 autoreply define igmp_clear_interface
145 * @brief register for igmp events
146 * @param client_index - opaque cookie to identify the sender
147 * @param context - sender context, to match reply w/ request
148 * @param pid - sender's pid
149 * @param enable - 1 enable, 0 disable igmp events
151 autoreply define want_igmp_events
161 rpc want_igmp_events returns want_igmp_events_reply
166 * @brief igmp event details
167 * @param client_index - opaque cookie to identify the sender
168 * @param context - sender context, to match reply w/ request
169 * @param sw_if_index - interface sw index
170 * @param saddr - source address
171 * @param gaddr - group address
172 *@param filter - filter mode
179 vl_api_filter_mode_t filter;
180 vl_api_ip4_address_t saddr;
181 vl_api_ip4_address_t gaddr;
185 * @brief enum to specify either ASM or SSM semantics
187 enum group_prefix_type
194 * @brief Definition of a Group prefix and its type
198 vl_api_group_prefix_type_t type;
199 vl_api_prefix_t prefix;
203 * @brief Configure a prefix for SSM or ASM semantics
204 * @param address - Prefix address
205 * @param address_length - Prefix length
207 autoreply define igmp_group_prefix_set
212 vl_api_group_prefix_t gp;
215 define igmp_group_prefix_dump
221 define igmp_group_prefix_details
225 vl_api_group_prefix_t gp;
231 * eval: (c-set-style "gnu")