forked from Mirror/frr
bgpd,lib: document the table id / instance usage
Document where relevant about the instance overload to table ID so users know what to expect. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
This commit is contained in:
parent
36b94dcc7b
commit
5846339eae
|
@ -2043,6 +2043,18 @@ int bgp_redistribute_set(struct bgp *bgp, afi_t afi, int type,
|
||||||
/* Return if already redistribute flag is set. */
|
/* Return if already redistribute flag is set. */
|
||||||
if (instance) {
|
if (instance) {
|
||||||
if (type == ZEBRA_ROUTE_TABLE_DIRECT) {
|
if (type == ZEBRA_ROUTE_TABLE_DIRECT) {
|
||||||
|
/*
|
||||||
|
* When redistribution type is `table-direct` the
|
||||||
|
* instance means `table identification`.
|
||||||
|
*
|
||||||
|
* `table_id` support 32bit integers, however since
|
||||||
|
* `instance` is being overloaded to `table_id` it
|
||||||
|
* will only be possible to use the first 65535
|
||||||
|
* entries.
|
||||||
|
*
|
||||||
|
* Also the ZAPI must also support `int`
|
||||||
|
* (see `zebra_redistribute_add`).
|
||||||
|
*/
|
||||||
struct redist_table_direct table = {
|
struct redist_table_direct table = {
|
||||||
.table_id = instance,
|
.table_id = instance,
|
||||||
.vrf_id = bgp->vrf_id,
|
.vrf_id = bgp->vrf_id,
|
||||||
|
|
|
@ -4774,6 +4774,16 @@ static void zclient_redistribute_table_direct(struct zclient *zclient, vrf_id_t
|
||||||
void zclient_redistribute(int command, struct zclient *zclient, afi_t afi,
|
void zclient_redistribute(int command, struct zclient *zclient, afi_t afi,
|
||||||
int type, unsigned short instance, vrf_id_t vrf_id)
|
int type, unsigned short instance, vrf_id_t vrf_id)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* When asking for table-direct redistribution the parameter
|
||||||
|
* `instance` has a different meaning: it means table
|
||||||
|
* identification.
|
||||||
|
*
|
||||||
|
* The table identification information is stored in
|
||||||
|
* `zclient->mi_redist` along with the VRF identification
|
||||||
|
* information in a pair (different from the usual single protocol
|
||||||
|
* instance value).
|
||||||
|
*/
|
||||||
if (type == ZEBRA_ROUTE_TABLE_DIRECT) {
|
if (type == ZEBRA_ROUTE_TABLE_DIRECT) {
|
||||||
zclient_redistribute_table_direct(zclient, vrf_id, afi, instance, command);
|
zclient_redistribute_table_direct(zclient, vrf_id, afi, instance, command);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -271,6 +271,12 @@ struct redist_proto {
|
||||||
/**
|
/**
|
||||||
* Redistribute table direct instance data structure: keeps the VRF
|
* Redistribute table direct instance data structure: keeps the VRF
|
||||||
* that subscribed to the table ID.
|
* that subscribed to the table ID.
|
||||||
|
*
|
||||||
|
* **NOTE**
|
||||||
|
* `table_id` is an integer because that is what the netlink interface
|
||||||
|
* uses for route attribute RTA_TABLE (32bit int), however the whole
|
||||||
|
* zclient API uses `unsigned short` (and CLI commands) so it will be
|
||||||
|
* limited to the range 1 to 65535.
|
||||||
*/
|
*/
|
||||||
struct redist_table_direct {
|
struct redist_table_direct {
|
||||||
vrf_id_t vrf_id;
|
vrf_id_t vrf_id;
|
||||||
|
|
Loading…
Reference in a new issue