• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/zebra/bgpd/

Lines Matching refs:bgp

98       if (listcount (bm->bgp) > 1)
121 bgp_flag_set (struct bgp *bgp, int flag)
123 SET_FLAG (bgp->flags, flag);
128 bgp_flag_unset (struct bgp *bgp, int flag)
130 UNSET_FLAG (bgp->flags, flag);
135 bgp_flag_check (struct bgp *bgp, int flag)
137 return CHECK_FLAG (bgp->flags, flag);
143 bgp_config_set (struct bgp *bgp, int config)
145 SET_FLAG (bgp->config, config);
149 bgp_config_unset (struct bgp *bgp, int config)
151 UNSET_FLAG (bgp->config, config);
155 bgp_config_check (struct bgp *bgp, int config)
157 return CHECK_FLAG (bgp->config, config);
163 bgp_router_id_set (struct bgp *bgp, struct in_addr *id)
168 if (bgp_config_check (bgp, BGP_CONFIG_ROUTER_ID)
169 && IPV4_ADDR_SAME (&bgp->router_id, id))
172 IPV4_ADDR_COPY (&bgp->router_id, id);
173 bgp_config_set (bgp, BGP_CONFIG_ROUTER_ID);
176 LIST_LOOP (bgp->peer, peer, nn)
189 bgp_router_id_unset (struct bgp *bgp)
194 if (! bgp_config_check (bgp, BGP_CONFIG_ROUTER_ID))
197 bgp->router_id.s_addr = 0;
198 bgp_config_unset (bgp, BGP_CONFIG_ROUTER_ID);
201 LIST_LOOP (bgp->peer, peer, nn)
210 LIST_LOOP (bgp->peer, peer, nn)
223 bgp_cluster_id_set (struct bgp *bgp, struct in_addr *cluster_id)
228 if (bgp_config_check (bgp, BGP_CONFIG_CLUSTER_ID)
229 && IPV4_ADDR_SAME (&bgp->cluster_id, cluster_id))
232 IPV4_ADDR_COPY (&bgp->cluster_id, cluster_id);
233 bgp_config_set (bgp, BGP_CONFIG_CLUSTER_ID);
236 LIST_LOOP (bgp->peer, peer, nn)
249 bgp_cluster_id_unset (struct bgp *bgp)
254 if (! bgp_config_check (bgp, BGP_CONFIG_CLUSTER_ID))
257 bgp->cluster_id.s_addr = 0;
258 bgp_config_unset (bgp, BGP_CONFIG_CLUSTER_ID);
261 LIST_LOOP (bgp->peer, peer, nn)
276 bgp_timers_set (struct bgp *bgp, u_int32_t keepalive, u_int32_t holdtime)
278 bgp->default_keepalive = (keepalive < holdtime / 3
280 bgp->default_holdtime = holdtime;
286 bgp_timers_unset (struct bgp *bgp)
288 bgp->default_keepalive = BGP_DEFAULT_KEEPALIVE;
289 bgp->default_holdtime = BGP_DEFAULT_HOLDTIME;
297 bgp_confederation_id_set (struct bgp *bgp, as_t as)
307 already_confed = bgp_config_check (bgp, BGP_CONFIG_CONFEDERATION);
308 bgp->confed_id = as;
309 bgp_config_set (bgp, BGP_CONFIG_CONFEDERATION);
314 LIST_LOOP (bgp->peer, peer, nn)
351 bgp_confederation_id_unset (struct bgp *bgp)
356 bgp->confed_id = 0;
357 bgp_config_unset (bgp, BGP_CONFIG_CONFEDERATION);
359 LIST_LOOP (bgp->peer, peer, nn)
364 peer->local_as = bgp->as;
377 bgp_confederation_peers_check (struct bgp *bgp, as_t as)
381 if (! bgp)
384 for (i = 0; i < bgp->confed_peers_cnt; i++)
385 if (bgp->confed_peers[i] == as)
393 bgp_confederation_peers_add (struct bgp *bgp, as_t as)
398 if (! bgp)
401 if (bgp->as == as)
404 if (bgp_confederation_peers_check (bgp, as))
407 if (bgp->confed_peers)
408 bgp->confed_peers = XREALLOC (MTYPE_BGP_CONFED_LIST,
409 bgp->confed_peers,
410 (bgp->confed_peers_cnt + 1) * sizeof (as_t));
412 bgp->confed_peers = XMALLOC (MTYPE_BGP_CONFED_LIST,
413 (bgp->confed_peers_cnt + 1) * sizeof (as_t));
415 bgp->confed_peers[bgp->confed_peers_cnt] = as;
416 bgp->confed_peers_cnt++;
418 if (bgp_config_check (bgp, BGP_CONFIG_CONFEDERATION))
420 LIST_LOOP (bgp->peer, peer, nn)
424 peer->local_as = bgp->as;
438 bgp_confederation_peers_remove (struct bgp *bgp, as_t as)
445 if (! bgp)
448 if (! bgp_confederation_peers_check (bgp, as))
451 for (i = 0; i < bgp->confed_peers_cnt; i++)
452 if (bgp->confed_peers[i] == as)
453 for(j = i + 1; j < bgp->confed_peers_cnt; j++)
454 bgp->confed_peers[j - 1] = bgp->confed_peers[j];
456 bgp->confed_peers_cnt--;
458 if (bgp->confed_peers_cnt == 0)
460 if (bgp->confed_peers)
461 XFREE (MTYPE_BGP_CONFED_LIST, bgp->confed_peers);
462 bgp->confed_peers = NULL;
465 bgp->confed_peers = XREALLOC (MTYPE_BGP_CONFED_LIST,
466 bgp->confed_peers,
467 bgp->confed_peers_cnt * sizeof (as_t));
471 if (bgp_config_check (bgp, BGP_CONFIG_CONFEDERATION))
473 LIST_LOOP (bgp->peer, peer, nn)
477 peer->local_as = bgp->confed_id;
493 bgp_default_local_preference_set (struct bgp *bgp, u_int32_t local_pref)
495 if (! bgp)
498 bgp_config_set (bgp, BGP_CONFIG_DEFAULT_LOCAL_PREF);
499 bgp->default_local_pref = local_pref;
505 bgp_default_local_preference_unset (struct bgp *bgp)
507 if (! bgp)
510 bgp_config_unset (bgp, BGP_CONFIG_DEFAULT_LOCAL_PREF);
511 bgp->default_local_pref = BGP_DEFAULT_LOCAL_PREF;
638 struct bgp *bgp;
640 bgp = peer->bgp;
646 return (bgp->as == peer->as ? BGP_PEER_IBGP : BGP_PEER_EBGP);
659 if (bgp && CHECK_FLAG (bgp->config, BGP_CONFIG_CONFEDERATION))
666 if (peer->local_as == bgp->confed_id)
672 if (bgp_confederation_peers_check (bgp, peer->as))
729 sp = getservbyname ("bgp", "tcp");
737 peer_create (union sockunion *su, struct bgp *bgp, as_t local_as,
745 peer->bgp = bgp;
749 peer->local_id = bgp->router_id;
750 peer->v_holdtime = bgp->default_holdtime;
751 peer->v_keepalive = bgp->default_keepalive;
756 listnode_add_sort (bgp->peer, peer);
782 peer_create_accept (struct bgp *bgp)
787 peer->bgp = bgp;
788 listnode_add_sort (bgp->peer, peer);
849 peer_remote_as (struct bgp *bgp, union sockunion *su, as_t *as,
855 peer = peer_lookup (bgp, su);
870 if (bgp->as != *as)
878 if (bgp->as == *as)
895 if (bgp_config_check (bgp, BGP_CONFIG_CONFEDERATION)
896 && ! bgp_confederation_peers_check (bgp, *as)
897 && bgp->as != *as)
898 local_as = bgp->confed_id;
900 local_as = bgp->as;
902 /* If this is IPv4 unicast configuration and "no bgp default
905 if (bgp_flag_check (bgp, BGP_FLAG_NO_DEFAULT_IPV4)
907 peer = peer_create (su, bgp, local_as, *as, 0, 0);
909 peer = peer_create (su, bgp, local_as, *as, afi, safi);
1026 struct bgp *bgp;
1029 bgp = peer->bgp;
1055 listnode_delete (bgp->peer, peer);
1161 peer_group_lookup (struct bgp *bgp, char *name)
1166 LIST_LOOP (bgp->group, group, nn)
1175 peer_group_get (struct bgp *bgp, char *name)
1179 group = peer_group_lookup (bgp, name);
1184 group->bgp = bgp;
1188 if (! bgp_flag_check (bgp, BGP_FLAG_NO_DEFAULT_IPV4))
1191 group->conf->bgp = bgp;
1202 listnode_add_sort (bgp->group, group);
1390 peer_group_remote_as (struct bgp *bgp, char *group_name, as_t *as)
1396 group = peer_group_lookup (bgp, group_name);
1419 struct bgp *bgp;
1423 bgp = group->bgp;
1439 listnode_delete (bgp->group, group);
1469 peer_group_bind (struct bgp *bgp, union sockunion *su,
1480 peer = peer_lookup (bgp, su);
1488 peer = peer_create (su, bgp, bgp->as, group->conf->as, afi, safi);
1564 peer_group_unbind (struct bgp *bgp, struct peer *peer,
1599 /* BGP instance creation by `router bgp' commands. */
1600 struct bgp *
1603 struct bgp *bgp;
1607 bgp = XCALLOC (MTYPE_BGP, sizeof (struct bgp));
1609 bgp->peer_self = peer_new ();
1610 bgp->peer_self->host = "Static announcement";
1612 bgp->peer = list_new ();
1613 bgp->peer->cmp = (int (*)(void *, void *)) peer_cmp;
1615 bgp->group = list_new ();
1616 bgp->group->cmp = (int (*)(void *, void *)) peer_group_cmp;
1621 bgp->route[afi][safi] = bgp_table_init ();
1622 bgp->aggregate[afi][safi] = bgp_table_init ();
1623 bgp->rib[afi][safi] = bgp_table_init ();
1626 bgp->default_local_pref = BGP_DEFAULT_LOCAL_PREF;
1627 bgp->default_holdtime = BGP_DEFAULT_HOLDTIME;
1628 bgp->default_keepalive = BGP_DEFAULT_KEEPALIVE;
1630 bgp->as = *as;
1633 bgp->name = strdup (name);
1635 return bgp;
1639 struct bgp *
1642 if (bm->bgp->head)
1643 return bm->bgp->head->data;
1648 struct bgp *
1651 struct bgp *bgp;
1654 LIST_LOOP (bm->bgp, bgp, nn)
1655 if (bgp->as == as
1656 && ((bgp->name == NULL && name == NULL)
1657 || (bgp->name && name && strcmp (bgp->name, name) == 0)))
1658 return bgp;
1663 struct bgp *
1666 struct bgp *bgp;
1669 LIST_LOOP (bm->bgp, bgp, nn)
1670 if ((bgp->name == NULL && name == NULL)
1671 || (bgp->name && name && strcmp (bgp->name, name) == 0))
1672 return bgp;
1678 bgp_get (struct bgp **bgp_val, as_t *as, char *name)
1680 struct bgp *bgp;
1686 bgp = bgp_lookup_by_name (name);
1688 bgp = bgp_get_default ();
1691 if (bgp)
1693 if (bgp->as != *as)
1695 *as = bgp->as;
1698 *bgp_val = bgp;
1709 bgp = bgp_get_default ();
1711 if (bgp)
1713 if (bgp->as != *as)
1715 *as = bgp->as;
1718 *bgp_val = bgp;
1723 bgp = bgp_create (as, name);
1724 listnode_add (bm->bgp, bgp);
1726 *bgp_val = bgp;
1733 bgp_delete (struct bgp *bgp)
1743 bgp_static_delete (bgp);
1749 bgp_redistribute_unset (bgp, afi, i);
1751 bgp->group->del = (void (*)(void *)) peer_group_delete;
1752 list_delete (bgp->group);
1754 for (nn = bgp->peer->head; nn; nn = next)
1761 listnode_delete (bm->bgp, bgp);
1763 if (bgp->name)
1764 free (bgp->name);
1769 if (bgp->route[afi][safi])
1770 XFREE (MTYPE_ROUTE_TABLE, bgp->route[afi][safi]);
1771 if (bgp->aggregate[afi][safi])
1772 XFREE (MTYPE_ROUTE_TABLE,bgp->aggregate[afi][safi]) ;
1773 if (bgp->rib[afi][safi])
1774 XFREE (MTYPE_ROUTE_TABLE,bgp->rib[afi][safi]);
1776 XFREE (MTYPE_BGP, bgp);
1783 peer_lookup (struct bgp *bgp, union sockunion *su)
1788 if (! bgp)
1789 bgp = bgp_get_default ();
1791 if (! bgp)
1794 LIST_LOOP (bgp->peer, peer, nn)
1809 struct bgp *bgp;
1811 bgp = bgp_get_default ();
1812 if (! bgp)
1815 LIST_LOOP (bgp->peer, peer, nn)
1827 LIST_LOOP (bgp->peer, peer, nn)
2921 struct bgp *bgp = peer->bgp;
2929 if (bgp->as == as)
3133 struct bgp *bgp;
3138 LIST_LOOP (bm->bgp, bgp, nn)
3140 LIST_LOOP (bgp->peer, peer, nm)
3157 LIST_LOOP (bgp->group, group, nm)
3289 struct bgp *bgp;
3297 LIST_LOOP (bm->bgp, bgp, nn)
3299 LIST_LOOP (bgp->peer, peer, nm)
3316 LIST_LOOP (bgp->group, group, nm)
3446 struct bgp *bgp;
3451 LIST_LOOP (bm->bgp, bgp, nn)
3453 LIST_LOOP (bgp->peer, peer, nm)
3470 LIST_LOOP (bgp->group, group, nm)
3895 bgp_config_write_peer (struct vty *vty, struct bgp *bgp,
4059 if (bgp_flag_check (bgp, BGP_FLAG_NO_DEFAULT_IPV4))
4244 bgp_config_write_family (struct vty *vty, struct bgp *bgp, afi_t afi,
4252 bgp_config_write_network (vty, bgp, afi, safi, &write);
4254 bgp_config_write_redistribute (vty, bgp, afi, safi, &write);
4256 LIST_LOOP (bgp->group, group, nn)
4261 bgp_config_write_peer (vty, bgp, group->conf, afi, safi);
4264 LIST_LOOP (bgp->peer, peer, nn)
4271 bgp_config_write_peer (vty, bgp, peer, afi, safi);
4285 struct bgp *bgp;
4293 vty_out (vty, "bgp multiple-instance%s", VTY_NEWLINE);
4300 vty_out (vty, "bgp config-type cisco%s", VTY_NEWLINE);
4305 LIST_LOOP (bm->bgp, bgp, nn)
4310 /* Router bgp ASN */
4311 vty_out (vty, "router bgp %d", bgp->as);
4315 if (bgp->name)
4316 vty_out (vty, " view %s", bgp->name);
4325 if (CHECK_FLAG (bgp->flags, BGP_FLAG_NO_FAST_EXT_FAILOVER))
4326 vty_out (vty, " no bgp fast-external-failover%s", VTY_NEWLINE);
4329 if (CHECK_FLAG (bgp->config, BGP_CONFIG_ROUTER_ID))
4330 vty_out (vty, " bgp router-id %s%s", inet_ntoa (bgp->router_id),
4334 if (bgp_flag_check (bgp, BGP_FLAG_ALWAYS_COMPARE_MED))
4335 vty_out (vty, " bgp always-compare-med%s", VTY_NEWLINE);
4338 if (bgp_flag_check (bgp, BGP_FLAG_NO_DEFAULT_IPV4))
4339 vty_out (vty, " no bgp default ipv4-unicast%s", VTY_NEWLINE);
4342 if (bgp->default_local_pref != BGP_DEFAULT_LOCAL_PREF)
4343 vty_out (vty, " bgp default local-preference %d%s",
4344 bgp->default_local_pref, VTY_NEWLINE);
4347 if (bgp_flag_check (bgp, BGP_FLAG_NO_CLIENT_TO_CLIENT))
4348 vty_out (vty, " no bgp client-to-client reflection%s", VTY_NEWLINE);
4351 if (CHECK_FLAG (bgp->config, BGP_CONFIG_CLUSTER_ID))
4352 vty_out (vty, " bgp cluster-id %s%s", inet_ntoa (bgp->cluster_id),
4356 if (CHECK_FLAG (bgp->config, BGP_CONFIG_CONFEDERATION))
4358 vty_out (vty, " bgp confederation identifier %i%s", bgp->confed_id,
4360 if (bgp->confed_peers_cnt > 0)
4364 vty_out (vty, " bgp confederation peers");
4366 for (i = 0; i < bgp->confed_peers_cnt; i++)
4369 vty_out(vty, "%d", bgp->confed_peers[i]);
4377 if (bgp_flag_check (bgp, BGP_FLAG_ENFORCE_FIRST_AS))
4378 vty_out (vty, " bgp enforce-first-as%s", VTY_NEWLINE);
4381 if (bgp_flag_check (bgp, BGP_FLAG_DETERMINISTIC_MED))
4382 vty_out (vty, " bgp deterministic-med%s", VTY_NEWLINE);
4385 if (bgp_flag_check (bgp, BGP_FLAG_ASPATH_IGNORE))
4386 vty_out (vty, " bgp bestpath as-path ignore%s", VTY_NEWLINE);
4387 if (bgp_flag_check (bgp, BGP_FLAG_COMPARE_ROUTER_ID))
4388 vty_out (vty, " bgp bestpath compare-routerid%s", VTY_NEWLINE);
4389 if (bgp_flag_check (bgp, BGP_FLAG_MED_CONFED)
4390 || bgp_flag_check (bgp, BGP_FLAG_MED_MISSING_AS_WORST))
4392 vty_out (vty, " bgp bestpath med");
4393 if (bgp_flag_check (bgp, BGP_FLAG_MED_CONFED))
4395 if (bgp_flag_check (bgp, BGP_FLAG_MED_MISSING_AS_WORST))
4401 if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK))
4402 vty_out (vty, " bgp network import-check%s", VTY_NEWLINE);
4408 if (CHECK_FLAG (bgp->af_flags[AFI_IP][SAFI_UNICAST],
4413 bgp_config_write_network (vty, bgp, AFI_IP, SAFI_UNICAST, &write);
4416 bgp_config_write_redistribute (vty, bgp, AFI_IP, SAFI_UNICAST, &write);
4419 if (bgp->default_keepalive != BGP_DEFAULT_KEEPALIVE
4420 && bgp->default_holdtime != BGP_DEFAULT_HOLDTIME)
4421 vty_out (vty, " timers bgp %d %d%s", bgp->default_keepalive,
4422 bgp->default_holdtime, VTY_NEWLINE);
4425 LIST_LOOP (bgp->group, group, nm)
4427 bgp_config_write_peer (vty, bgp, group->conf, AFI_IP, SAFI_UNICAST);
4431 LIST_LOOP (bgp->peer, peer, no)
4434 bgp_config_write_peer (vty, bgp, peer, AFI_IP, SAFI_UNICAST);
4438 bgp_config_write_distance (vty, bgp);
4445 write += bgp_config_write_family (vty, bgp, AFI_IP, SAFI_MULTICAST);
4448 write += bgp_config_write_family (vty, bgp, AFI_IP, SAFI_MPLS_VPN);
4451 write += bgp_config_write_family (vty, bgp, AFI_IP6, SAFI_UNICAST);
4464 bm->bgp = list_new ();