summaryrefslogtreecommitdiffstats
path: root/pimd/pim_zebra.c
Commit message (Collapse)AuthorAgeFilesLines
* *: use an ifindex_t type, defined in lib/if.h, for ifindex valuesPaul Jakma2016-02-261-4/+4
|
* pimd: Cleanup interface startupDonald Sharp2015-10-271-16/+10
| | | | | | | This patch cleans up some interface startup, removes duplicate debug messages and protects against some always being displayed. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: Cleanup zebra debugs to be protected by debug commandsDonald Sharp2015-10-271-1/+1
| | | | | | | | pimd is very chatty without any pim debugs turned on. This commit fixes a bunch of the debugs to be protected by appropriate pim debug statement. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* lib: zclient.c remove extern struct thread_master *Donald Sharp2015-10-271-2/+2
| | | | | | | | | | | | zclient.c depended upon link time inclusion of a extern struct thread_master *master. This is a violation of the namespace of the calling daemon. If a library needs the pointer pass it in and save it for future use. This code change also makes the zclient code consistent with the other lib functions that need to schedule work on your behalf Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* *: add VRF ID in the API message headerFeng Lu2015-06-031-16/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The API messages are used by zebra to exchange the interfaces, addresses, routes and router-id information with its clients. To distinguish which VRF the information belongs to, a new field "VRF ID" is added in the message header. And hence the message version is increased to 3. * The new field "VRF ID" in the message header: Length (2 bytes) Marker (1 byte) Version (1 byte) VRF ID (2 bytes, newly added) Command (2 bytes) - Client side: - zclient_create_header() adds the VRF ID in the message header. - zclient_read() extracts and validates the VRF ID from the header, and passes the VRF ID to the callback functions registered to the API messages. - All relative functions are appended with a new parameter "vrf_id", including all the callback functions. - "vrf_id" is also added to "struct zapi_ipv4" and "struct zapi_ipv6". Clients need to correctly set the VRF ID when using the API functions zapi_ipv4_route() and zapi_ipv6_route(). - Till now all messages sent from a client have the default VRF ID "0" in the header. - The HELLO message is special, which is used as the heart-beat of a client, and has no relation with VRF. The VRF ID in the HELLO message header will always be 0 and ignored by zebra. - Zebra side: - zserv_create_header() adds the VRF ID in the message header. - zebra_client_read() extracts and validates the VRF ID from the header, and passes the VRF ID to the functions which process the received messages. - All relative functions are appended with a new parameter "vrf_id". * Suppress the messages in a VRF which a client does not care: Some clients may not care about the information in the VRF X, and zebra should not send the messages in the VRF X to those clients. Extra flags are used to indicate which VRF is registered by a client, and a new message ZEBRA_VRF_UNREGISTER is introduced to let a client can unregister a VRF when it does not need any information in that VRF. A client sends any message other than ZEBRA_VRF_UNREGISTER in a VRF will automatically register to that VRF. - lib/vrf: A new utility "VRF bit-map" is provided to manage the flags for VRFs, one bit per VRF ID. - Use vrf_bitmap_init()/vrf_bitmap_free() to initialize/free a bit-map; - Use vrf_bitmap_set()/vrf_bitmap_unset() to set/unset a flag in the given bit-map, corresponding to the given VRF ID; - Use vrf_bitmap_check() to test whether the flag, in the given bit-map and for the given VRF ID, is set. - Client side: - In "struct zclient", the following flags are changed from "u_char" to "vrf_bitmap_t": redist[ZEBRA_ROUTE_MAX] default_information These flags are extended for each VRF, and controlled by the clients themselves (or with the help of zclient_redistribute() and zclient_redistribute_default()). - Zebra side: - In "struct zserv", the following flags are changed from "u_char" to "vrf_bitmap_t": redist[ZEBRA_ROUTE_MAX] redist_default ifinfo ridinfo These flags are extended for each VRF, as the VRF registration flags. They are maintained on receiving a ZEBRA_XXX_ADD or ZEBRA_XXX_DELETE message. When sending an interface/address/route/router-id message in a VRF to a client, if the corresponding VRF registration flag is not set, this message will not be dropped by zebra. - A new function zread_vrf_unregister() is introduced to process the new command ZEBRA_VRF_UNREGISTER. All the VRF registration flags are cleared for the requested VRF. Those clients, who support only the default VRF, will never receive a message in a non-default VRF, thanks to the filter in zebra. * New callback for the event of successful connection to zebra: - zclient_start() is splitted, keeping only the code of connecting to zebra. - Now zclient_init()=>zclient_connect()=>zclient_start() operations are purely dealing with the connection to zbera. - Once zebra is successfully connected, at the end of zclient_start(), a new callback is used to inform the client about connection. - Till now, in the callback of connect-to-zebra event, all clients send messages to zebra to request the router-id/interface/routes information in the default VRF. Of corse in future the client can do anything it wants in this callback. For example, it may send requests for both default VRF and some non-default VRFs. Signed-off-by: Feng Lu <lu.feng@6wind.com> Reviewed-by: Alain Ritoux <alain.ritoux@6wind.com> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: mask unused zclient_broken()David Lamparter2015-04-211-0/+2
| | | | | | | this function is used by the currently not present zclient reconnect code. It'll be unmasked again when that code hits master. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* Revert "pimd: clear zclient-update: Reset zclient update connection to zebra ↵David Lamparter2015-02-041-1/+0
| | | | | | | | | | | | | | | daemon" This reverts commit 3456a80f5f8e6e44c30453bd92eabf5faf7ab25b. Conflicts: pimd/pim_zebra.c This depends on the zebra reconnect changes, which we're not picking up at this point. This revert is partial, only bumping out the reconnect-related changes. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* Revert "pim: Remove connected addresses on loss of zebra connection."David Lamparter2015-02-041-3/+1
| | | | | | | | | This reverts commit 96b6dfe98793549aca6a7cc77eaf0957b1168ed2. This depends on the zebra reconnect changes, which we're not picking up at this point. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* Revert "pimd: Explicitly restart zclient update connection."David Lamparter2015-02-041-4/+1
| | | | | | | | | This reverts commit 8150beed9a4f50a72696a65c1f40889ab65ad7ff. This depends on the zebra reconnect changes, which we're not picking up at this point. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* Revert "pimd: Revert: Explicitly restart zclient update connection."David Lamparter2015-02-041-0/+2
| | | | | | | | | This reverts commit 199f85ade39f751dd493fe011107736c9b168953. This depends on the zebra reconnect changes, which we're not picking up at this point. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* pimd: Log ifindex found for an interface when zebra lib reports a new ↵Everton Marques2015-02-041-2/+2
| | | | connected address.
* pimd: Report del_oif() failure within igmp_source_forward_stop().Everton Marques2015-02-041-10/+19
|
* pimd: Revert: Explicitly restart zclient update connection.Everton Marques2015-02-041-2/+0
|
* pimd: Explicitly restart zclient update connection.Everton Marques2015-02-041-1/+4
|
* pimd: Fix attempted out of bounds read when deleteing an interface.Savannah SR#1085422015-02-041-3/+9
| | | | https://savannah.nongnu.org/support/index.php?108542
* pimd: Fix igmp_source_forward_stop called when IGMP forwarding flag is not ↵Savannah SR#1085422015-02-041-2/+16
| | | | | | set in oif_flags. https://savannah.nongnu.org/support/index.php?108542
* pim: Remove connected addresses on loss of zebra connection.Everton Marques2015-02-041-1/+3
|
* pimd: Reduce informative mandatory logging.Everton Marques2015-02-041-7/+13
|
* pimd: -z command-line switch to specify zebra socket path.Everton Marques2015-02-041-2/+5
|
* pimd: clear zclient-update: Reset zclient update connection to zebra daemonEverton Marques2015-02-041-19/+18
|
* pimd: Withstand zclient connection restablishment.Everton Marques2015-02-041-10/+8
|
* pimd: Prevent interfaces' addresses duplication when zebra connection is ↵Everton Marques2015-02-041-1/+19
| | | | restored.
* pimd: FIXED C14 T32 Detection of interface primary address changes may fail.Everton Marques2015-02-041-7/+31
|
* C18 MFC never recovers from removal of static route to sourceEverton Marques2015-02-041-2/+5
|
* pimd: fix wtf codeDavid Lamparter2015-02-041-1/+1
| | | | | | | * pim_hello.c, * pim_neighbor.c: print pointers as %p * pim_time.c: comment out unused function * pim_zebra.c: wtf
* [pim] debug mrouteEverton Marques2015-02-041-0/+44
|
* [pim] More RPF cache refresh statisticsEverton Marques2015-02-041-0/+1
|
* [pim] RPF cache refresh statisticsEverton Marques2015-02-041-1/+9
|
* [pim] Log physical interface up/downEverton Marques2015-02-041-1/+7
| | | | | | | | | [pim] Replace strerror with safe_strerror [pim] Fix PIM socket removal from non-PIM interfaces [pim] show ip igmp querier: left-align Querier string [pim] Version up to 0.157 [pim] Recipe to re-sync with Quagga repository [pim] Build vtysh in development script
* [pim] Initial pim 0.155Everton Marques2015-02-041-0/+1172