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
103 * Add/del proxy device on specified VRF.
104 * Interface must be IGMP enabled in HOST mode.
106 * @param client_index - opaque cookie to identify the sender
107 * @param context - sender context, to match reply w/ request
108 * @param add - add (1) del (0)
109 * @param vrf_id - VRF id
110 * @param sw_if_index - upstream interface sw index
112 autoreply define igmp_proxy_device_add_del
124 * Add/del downstream interface to/from proxy device.
125 * Interface must be IGMP enabled in ROUTER mode.
127 * @param client_index - opaque cookie to identify the sender
128 * @param context - sender context, to match reply w/ request
129 * @param add - add (1) del (0)
130 * @param vrf_id - VRF id
131 * @param sw_if_index - downstream interface sw index
133 autoreply define igmp_proxy_device_add_del_interface
144 * @brief dump (S,G)s from interface
145 * @param client_index - opaque cookie to identify the sender
146 * @param context - sender context, to match reply w/ request
147 * @param sw_if_index - interface sw index (~0 for all)
158 * @brief igmp details
159 * @param context - sender context, to match reply w/ request
160 * @param sw_if_index - interface sw index
161 * @param saddr - source address
162 * @param gaddr - group address
169 vl_api_ip4_address_t saddr;
170 vl_api_ip4_address_t gaddr;
173 /** \brief remove all (S,G)s from an interface
174 @param client_index - opaque cookie to identify the sender
175 @param context - sender context, to match reply w/ request
176 @param sw_if_index - interface sw index
178 autoreply define igmp_clear_interface
187 * @brief register for igmp events
188 * @param client_index - opaque cookie to identify the sender
189 * @param context - sender context, to match reply w/ request
190 * @param pid - sender's pid
191 * @param enable - 1 enable, 0 disable igmp events
193 autoreply define want_igmp_events
203 rpc want_igmp_events returns want_igmp_events_reply
208 * @brief igmp event details
209 * @param client_index - opaque cookie to identify the sender
210 * @param context - sender context, to match reply w/ request
211 * @param sw_if_index - interface sw index
212 * @param saddr - source address
213 * @param gaddr - group address
214 *@param filter - filter mode
221 vl_api_filter_mode_t filter;
222 vl_api_ip4_address_t saddr;
223 vl_api_ip4_address_t gaddr;
227 * @brief enum to specify either ASM or SSM semantics
229 enum group_prefix_type
236 * @brief Definition of a Group prefix and its type
240 vl_api_group_prefix_type_t type;
241 vl_api_prefix_t prefix;
245 * @brief Configure a prefix for SSM or ASM semantics
246 * @param address - Prefix address
247 * @param address_length - Prefix length
249 autoreply define igmp_group_prefix_set
254 vl_api_group_prefix_t gp;
257 define igmp_group_prefix_dump
263 define igmp_group_prefix_details
267 vl_api_group_prefix_t gp;
273 * eval: (c-set-style "gnu")