コード例 #1
0
ファイル: bgp_zebra.c プロジェクト: KaloNK/quagga
void
bgp_zebra_init (struct thread_master *master)
{
  zclient_num_connects = 0;

  /* Set default values. */
  zclient = zclient_new (master);
  zclient_init (zclient, ZEBRA_ROUTE_BGP);
  zclient->zebra_connected = bgp_zebra_connected;
  zclient->router_id_update = bgp_router_id_update;
  zclient->interface_add = bgp_interface_add;
  zclient->interface_delete = bgp_interface_delete;
  zclient->interface_address_add = bgp_interface_address_add;
  zclient->interface_address_delete = bgp_interface_address_delete;
  zclient->ipv4_route_add = zebra_read_ipv4;
  zclient->ipv4_route_delete = zebra_read_ipv4;
  zclient->interface_up = bgp_interface_up;
  zclient->interface_down = bgp_interface_down;
  zclient->ipv6_route_add = zebra_read_ipv6;
  zclient->ipv6_route_delete = zebra_read_ipv6;
  zclient->nexthop_update = bgp_read_nexthop_update;

  bgp_nexthop_buf = stream_new(BGP_NEXTHOP_BUF_SIZE);
  bgp_ifindices_buf = stream_new(BGP_IFINDICES_BUF_SIZE);
}
コード例 #2
0
ファイル: bgp_zebra.c プロジェクト: DorChen/quagga
void
bgp_zebra_init (void)
{
  /* Set default values. */
  zclient = zclient_new ();
  zclient_init (zclient, ZEBRA_ROUTE_BGP);
  zclient->router_id_update = bgp_router_id_update;
  zclient->interface_add = bgp_interface_add;
  zclient->interface_delete = bgp_interface_delete;
  zclient->interface_address_add = bgp_interface_address_add;
  zclient->interface_address_delete = bgp_interface_address_delete;
  zclient->ipv4_route_add = zebra_read_ipv4;
  zclient->ipv4_route_delete = zebra_read_ipv4;
  zclient->interface_up = bgp_interface_up;
  zclient->interface_down = bgp_interface_down;
#ifdef HAVE_IPV6
  zclient->ipv6_route_add = zebra_read_ipv6;
  zclient->ipv6_route_delete = zebra_read_ipv6;
#endif /* HAVE_IPV6 */

  /* Interface related init. */
  if_init ();

  bgp_nexthop_buf = stream_new(BGP_NEXTHOP_BUF_SIZE);
}
コード例 #3
0
ファイル: rsvp_zebra.c プロジェクト: paban/my-source
void
rsvp_zebra_init ()
{
  /* Allocate zebra structure. */
  zclient = zclient_new ();
  zclient_init (zclient, ZEBRA_ROUTE_RSVP);
  zclient->router_id_update = rsvp_router_id_update_zebra;
  zclient->interface_add = rsvp_interface_add;
  zclient->interface_delete = rsvp_interface_delete;
  zclient->interface_up = rsvp_interface_state_up;
  zclient->interface_down = rsvp_interface_state_down;
  zclient->interface_address_add = rsvp_interface_address_add;
  zclient->interface_address_delete = rsvp_interface_address_delete;
  zclient->ipv4_route_add = rsvp_zebra_read_ipv4;
  zclient->ipv4_route_delete = rsvp_zebra_read_ipv4;
#if 0
  zclient->te_link_add = te_zebra_read_link;
  zclient->te_link_delete = te_zebra_read_link;
  zclient->te_link_update = te_zebra_read_link;
  zclient->te_link_remote_update = te_zebra_read_remote_link;
  zclient->te_link2rtrid_add = te_zebra_read_link2rtrid;
  zclient->te_link2rtrid_delete = te_zebra_read_link2rtrid;
  zclient->te_nexthop_add = te_zebra_read_nexthop;
  zclient->te_nexthop_delete = te_zebra_read_nexthop;
#endif

  zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, ZEBRA_ROUTE_TE);
#if 0
  rdb_igp_hello();
#endif
}
コード例 #4
0
ファイル: client_main.c プロジェクト: paban/my-source
/* Test zebra client main routine. */
int
main (int argc, char **argv)
{
    FILE *fp;

    if (argc == 1)
        usage_exit ();

    /* Establish connection to zebra. */
    zclient = zclient_new ();
    zclient->enable = 1;
#ifdef HAVE_TCP_ZEBRA
    zclient->sock = zclient_socket ();
#else
    zclient->sock = zclient_socket_un (ZEBRA_SERV_PATH);
#endif /* HAVE_TCP_ZEBRA */

    /* Open simulation file. */
    fp = fopen (argv[1], "r");
    if (fp == NULL)
    {
        fprintf (stderr, "can't open %s\n", argv[1]);
        exit (1);
    }

    /* Do main work. */
    zebra_sim (fp);

    sleep (100);

    fclose (fp);
    close (sock);

    return 0;
}
コード例 #5
0
ファイル: pim_zebra.c プロジェクト: Distrotech/quagga
void pim_zebra_init (struct thread_master *master, char *zebra_sock_path)
{
  int i;

  if (zebra_sock_path)
    zclient_serv_path_set(zebra_sock_path);

#ifdef HAVE_TCP_ZEBRA
  zlog_notice("zclient update contacting ZEBRA daemon at socket TCP %s,%d", "127.0.0.1", ZEBRA_PORT);
#else
  zlog_notice("zclient update contacting ZEBRA daemon at socket UNIX %s", zclient_serv_path_get());
#endif

  /* Socket for receiving updates from Zebra daemon */
  qpim_zclient_update = zclient_new (master);

  qpim_zclient_update->zebra_connected          = pim_zebra_connected;
  qpim_zclient_update->router_id_update         = pim_router_id_update_zebra;
  qpim_zclient_update->interface_add            = pim_zebra_if_add;
  qpim_zclient_update->interface_delete         = pim_zebra_if_del;
  qpim_zclient_update->interface_up             = pim_zebra_if_state_up;
  qpim_zclient_update->interface_down           = pim_zebra_if_state_down;
  qpim_zclient_update->interface_address_add    = pim_zebra_if_address_add;
  qpim_zclient_update->interface_address_delete = pim_zebra_if_address_del;
  qpim_zclient_update->ipv4_route_add           = redist_read_ipv4_route;
  qpim_zclient_update->ipv4_route_delete        = redist_read_ipv4_route;

  zclient_init(qpim_zclient_update, ZEBRA_ROUTE_PIM);
  if (PIM_DEBUG_PIM_TRACE) {
    zlog_info("zclient_init cleared redistribution request");
  }

  zassert(qpim_zclient_update->redist_default == ZEBRA_ROUTE_PIM);

  /* Request all redistribution */
  for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
    if (i == qpim_zclient_update->redist_default)
      continue;
    vrf_bitmap_set(qpim_zclient_update->redist[i], VRF_DEFAULT);
    if (PIM_DEBUG_PIM_TRACE) {
      zlog_debug("%s: requesting redistribution for %s (%i)", 
		 __PRETTY_FUNCTION__, zebra_route_string(i), i);
    }
  }

  /* Request default information */
  vrf_bitmap_set(qpim_zclient_update->default_information, VRF_DEFAULT);
  if (PIM_DEBUG_PIM_TRACE) {
    zlog_info("%s: requesting default information redistribution",
	      __PRETTY_FUNCTION__);

    zlog_notice("%s: zclient update socket initialized",
		__PRETTY_FUNCTION__);
  }

  zassert(!qpim_zclient_lookup);
  qpim_zclient_lookup = zclient_lookup_new();
  zassert(qpim_zclient_lookup);
}
コード例 #6
0
ファイル: rip_zebra.c プロジェクト: ton31337/frr
void rip_zclient_init(struct thread_master *master)
{
	/* Set default value to the zebra client structure. */
	zclient = zclient_new(master, &zclient_options_default);
	zclient_init(zclient, ZEBRA_ROUTE_RIP, 0, &ripd_privs);
	zclient->zebra_connected = rip_zebra_connected;
	zclient->interface_add = rip_interface_add;
	zclient->interface_delete = rip_interface_delete;
	zclient->interface_address_add = rip_interface_address_add;
	zclient->interface_address_delete = rip_interface_address_delete;
	zclient->interface_up = rip_interface_up;
	zclient->interface_down = rip_interface_down;
	zclient->interface_vrf_update = rip_interface_vrf_update;
	zclient->redistribute_route_add = rip_zebra_read_route;
	zclient->redistribute_route_del = rip_zebra_read_route;
}
コード例 #7
0
ファイル: sharp_zebra.c プロジェクト: ton31337/frr
void sharp_zebra_init(void)
{
	struct zclient_options opt = {.receive_notify = true};

	zclient = zclient_new(master, &opt);

	zclient_init(zclient, ZEBRA_ROUTE_SHARP, 0, &sharp_privs);
	zclient->zebra_connected = zebra_connected;
	zclient->interface_add = interface_add;
	zclient->interface_delete = interface_delete;
	zclient->interface_up = interface_state_up;
	zclient->interface_down = interface_state_down;
	zclient->interface_address_add = interface_address_add;
	zclient->interface_address_delete = interface_address_delete;
	zclient->route_notify_owner = route_notify_owner;
	zclient->nexthop_update = sharp_nexthop_update;
	zclient->import_check_update = sharp_nexthop_update;
}
コード例 #8
0
ファイル: nhrp_route.c プロジェクト: ton31337/frr
void nhrp_zebra_init(void)
{
	zebra_rib[AFI_IP] = route_table_init();
	zebra_rib[AFI_IP6] = route_table_init();

	zclient = zclient_new(master, &zclient_options_default);
	zclient->zebra_connected = nhrp_zebra_connected;
	zclient->interface_add = nhrp_interface_add;
	zclient->interface_delete = nhrp_interface_delete;
	zclient->interface_up = nhrp_interface_up;
	zclient->interface_down = nhrp_interface_down;
	zclient->interface_address_add = nhrp_interface_address_add;
	zclient->interface_address_delete = nhrp_interface_address_delete;
	zclient->redistribute_route_add = nhrp_route_read;
	zclient->redistribute_route_del = nhrp_route_read;

	zclient_init(zclient, ZEBRA_ROUTE_NHRP, 0, &nhrpd_privs);
}
コード例 #9
0
ファイル: sisisd.c プロジェクト: ecks/sis-is
void sisis_zebra_init (void)
{
  /* Set default values. */
  zclient = zclient_new ();
  zclient_init (zclient, ZEBRA_ROUTE_BGP);
  zclient->router_id_update = NULL;
  zclient->interface_add = NULL;
  zclient->interface_delete = NULL;
  zclient->interface_address_add = NULL;
  zclient->interface_address_delete = NULL;
  zclient->ipv4_route_add = NULL;
  zclient->ipv4_route_delete = NULL;
  zclient->interface_up = NULL;
  zclient->interface_down = NULL;
#ifdef HAVE_IPV6
  zclient->ipv6_route_add = NULL;
  zclient->ipv6_route_delete = NULL;
#endif /* HAVE_IPV6 */
}
コード例 #10
0
ファイル: isis_zebra.c プロジェクト: OPSF/uClinux
void
isis_zebra_init ()
{
    zclient = zclient_new ();
    zclient_init (zclient, ZEBRA_ROUTE_ISIS);
    zclient->router_id_update = isis_router_id_update_zebra;
    zclient->interface_add = isis_zebra_if_add;
    zclient->interface_delete = isis_zebra_if_del;
    zclient->interface_up = isis_zebra_if_state_up;
    zclient->interface_down = isis_zebra_if_state_down;
    zclient->interface_address_add = isis_zebra_if_address_add;
    zclient->interface_address_delete = isis_zebra_if_address_del;
    zclient->ipv4_route_add = isis_zebra_read_ipv4;
    zclient->ipv4_route_delete = isis_zebra_read_ipv4;
#ifdef HAVE_IPV6
    zclient->ipv6_route_add = isis_zebra_read_ipv6;
    zclient->ipv6_route_delete = isis_zebra_read_ipv6;
#endif /* HAVE_IPV6 */

    return;
}
struct zclient *zclient_lookup_new()
{
  struct zclient *zlookup;

  zlookup = zclient_new();
  if (!zlookup) {
    zlog_err("%s: zclient_new() failure",
	     __PRETTY_FUNCTION__);
    return 0;
  }

  zlookup->sock = -1;
  zlookup->ibuf = stream_new(ZEBRA_MAX_PACKET_SIZ);
  zlookup->obuf = stream_new(ZEBRA_MAX_PACKET_SIZ);
  zlookup->t_connect = 0;

  zclient_lookup_sched_now(zlookup);

  zlog_notice("%s: zclient lookup socket initialized",
	      __PRETTY_FUNCTION__);

  return zlookup;
}
コード例 #12
0
ファイル: ldp_zebra.c プロジェクト: paban/my-source
void ldp_zebra_init() {

  pending_out_segment = list_new();
  pending_ftn = list_new();
  pending_ftn->del = pending_delete;
  pending_xc = list_new();
  pending_xc->del = pending_delete;

  /* Allocate zebra structure. */
  zclient = zclient_new();
  zclient_init(zclient, ZEBRA_ROUTE_LDP);
  zclient->router_id_update = ldp_router_id_update_zebra;
  zclient->interface_add = ldp_interface_add;
  zclient->interface_delete = ldp_interface_deletez;
  zclient->interface_up = ldp_interface_state_up;
  zclient->interface_down = ldp_interface_state_down;
  zclient->interface_address_add = ldp_interface_address_add;
  zclient->interface_address_delete = ldp_interface_address_delete;
  zclient->ipv4_route_add = ldp_zebra_read_ipv4;
  zclient->ipv4_route_delete = ldp_zebra_read_ipv4;
/*
 *zclient->ipv6_route_add = ldp_zebra_read_ipv6;
 *zclient->ipv6_route_delete = ldp_zebra_read_ipv6;
 */
  zclient->mpls_xc_add = ldp_xc_read;
  zclient->mpls_xc_delete = ldp_xc_read;
  zclient->mpls_in_segment_add = ldp_in_segment_read;
  zclient->mpls_in_segment_delete = ldp_in_segment_read;
  zclient->mpls_out_segment_add = ldp_out_segment_read;
  zclient->mpls_out_segment_delete = ldp_out_segment_read;
  zclient->mpls_labelspace_add = ldp_labelspace_read;
  zclient->mpls_labelspace_delete = ldp_labelspace_read;
  zclient->mpls_ftn_add = ldp_ftn_read;
  zclient->mpls_ftn_delete = ldp_ftn_read;

  memset(&router_id, 0, sizeof(router_id));
}