diff options
Diffstat (limited to 'isisd')
| -rw-r--r-- | isisd/ChangeLog | 4 | ||||
| -rw-r--r-- | isisd/isis_lsp.c | 307 | ||||
| -rw-r--r-- | isisd/isis_pdu.c | 101 | ||||
| -rw-r--r-- | isisd/isis_spf.c | 22 | 
4 files changed, 4 insertions, 430 deletions
| diff --git a/isisd/ChangeLog b/isisd/ChangeLog index 3735b4fc..36098d17 100644 --- a/isisd/ChangeLog +++ b/isisd/ChangeLog @@ -1,5 +1,9 @@  2005-09-19 Hasso Tepper <hasso at quagga.net> +	* isis_lsp.c, isis_pdu.c, isis_spf.c: Remove some old unused code. + +2005-09-19 Hasso Tepper <hasso at quagga.net> +  	* isis_lsp.c: Better output of detailed LSP printout and fixed TE IPv4  	  reachibility metric display. diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c index d02f3833..b7ddfd9d 100644 --- a/isisd/isis_lsp.c +++ b/isisd/isis_lsp.c @@ -915,246 +915,6 @@ lsp_print_all (struct vty *vty, dict_t * lspdb, char detail, char dynhost)    return lsp_count;  } -#if 0 -/* this function reallocate memory to an lsp pdu, with an additional - * size of memory, it scans the lsp and moves all pointers the - * way they should */ -static u_char * -lsppdu_realloc (struct isis_lsp * lsp, int memorytype, int size) -{ -  u_char *retval; - -  retval = STREAM_DATA (lsp->pdu) + ntohs (lsp->lsp_header->pdu_len); -#ifdef   LSP_MEMORY_PREASSIGN -  lsp->lsp_header->pdu_len = htons (ntohs (lsp->lsp_header->pdu_len) + size); -  return retval; -#else /* otherwise we have to move all pointers */ -  u_char *newpdu; -  newpdu = stream_new (ntohs (lsp->lsp_header->pdu_len) + size); -  stream_put (newpdu, STREAM_DATA(lsp->pdu), ntohs (lsp->lsp_header->pdu_len)); -  XFREE (memorytype, lsp->pdu); -  lsp->pdu = newpdu; -  lsp->isis_header = (struct isis_fixed_hdr *) STREAM_DATA (lsp->pdu); -  lsp->lsp_header = (struct isis_link_state_hdr *) -    (STREAM_DATA (lsp->pdu) + ISIS_FIXED_HDR_LEN); -  htons (ntohs (lsp->lsp_header->pdu_len) += size); -  return STREAM_DATA (lsp->pdu) + (lsp->lsp_header->pdu_len - size); -#endif /* LSP_MEMORY_PREASSIGN */ -} -#endif - -#if 0				/* Saving the old one just in case :) */ -/* - * Builds the lsp->tlv_data - * and writes the tlvs into lsp->pdu  - */ -void -lsp_build_nonpseudo (struct isis_lsp *lsp, struct isis_area *area) -{ -  struct is_neigh *is_neigh; -  struct listnode *node, *nnode, *ipnode, *ipnnode; -  int level = lsp->level; -  struct isis_circuit *circuit; -  struct prefix_ipv4 *ipv4; -  struct ipv4_reachability *ipreach; -  struct isis_adjacency *nei; -#ifdef HAVE_IPV6 -  struct prefix_ipv6 *ipv6; -  struct ipv6_reachability *ip6reach; -#endif /* HAVE_IPV6 */ - -  /* -   * First add the tlvs related to area -   */ - -  /* Area addresses */ -  if (lsp->tlv_data.area_addrs == NULL) -    lsp->tlv_data.area_addrs = list_new (); -  list_add_list (lsp->tlv_data.area_addrs, area->area_addrs); -  /* Protocols Supported */ -  if (area->ip_circuits > 0 -#ifdef HAVE_IPV6 -      || area->ipv6_circuits > 0 -#endif /* HAVE_IPV6 */ -    ) -    { -      lsp->tlv_data.nlpids = XMALLOC (MTYPE_ISIS_TLV, sizeof (struct nlpids)); -      lsp->tlv_data.nlpids->count = 0; -      if (area->ip_circuits > 0) -	{ -	  lsp->tlv_data.nlpids->count++; -	  lsp->tlv_data.nlpids->nlpids[0] = NLPID_IP; -	} -#ifdef HAVE_IPV6 -      if (area->ipv6_circuits > 0) -	{ -	  lsp->tlv_data.nlpids->count++; -	  lsp->tlv_data.nlpids->nlpids[lsp->tlv_data.nlpids->count - 1] = -	    NLPID_IPV6; -	} -#endif /* HAVE_IPV6 */ -    } -  /* Dynamic Hostname */ -  if (area->dynhostname) -    { -      lsp->tlv_data.hostname = XMALLOC (MTYPE_ISIS_TLV, -					sizeof (struct hostname)); -      memcpy (&lsp->tlv_data.hostname->name, unix_hostname (), -	      strlen (unix_hostname ())); -      lsp->tlv_data.hostname->namelen = strlen (unix_hostname ()); -    } -#ifdef TOPOLOGY_GENERATE -  /* -   * If we have a topology in this area, we need to connect this lsp to -   * the first topology lsp -   */ -  if ((area->topology) && (level == 1)) -    { -      if (lsp->tlv_data.is_neighs == NULL) -	lsp->tlv_data.is_neighs = list_new (); -      is_neigh = XCALLOC (MTYPE_ISIS_TLV, sizeof (struct is_neigh)); -      memcpy (&is_neigh->neigh_id, area->topology_baseis, ISIS_SYS_ID_LEN); -      /* connected to the first */ -      is_neigh->neigh_id[ISIS_SYS_ID_LEN - 1] = (0x01); -      /* this is actually the same system, why mess the SPT */ -      is_neigh->metrics.metric_default = 0; -      is_neigh->metrics.metric_delay = METRICS_UNSUPPORTED; -      is_neigh->metrics.metric_expense = METRICS_UNSUPPORTED; -      is_neigh->metrics.metric_error = METRICS_UNSUPPORTED; -      listnode_add (lsp->tlv_data.is_neighs, is_neigh); - -    } -#endif - -  /* -   * Then add tlvs related to circuits -   */ -  for (ALL_LIST_ELEMENTS (area->circuit_list, node, nnode, circuit)) -    { -      if (circuit->state != C_STATE_UP) -	continue; - -      /* -       * Add IPv4 internal reachability of this circuit -       */ -      if (circuit->ip_router && circuit->ip_addrs && -	  circuit->ip_addrs->count > 0) -	{ -	  if (lsp->tlv_data.ipv4_int_reachs == NULL) -	    { -	      lsp->tlv_data.ipv4_int_reachs = list_new (); -	      lsp->tlv_data.ipv4_int_reachs->del = free_tlv; -	    } -          for (ALL_LIST_ELEMENTS (circuit->ip_addrs, ipnode, ipnnode, ipv4)) -	    { -	      ipreach = -		XCALLOC (MTYPE_ISIS_TLV, sizeof (struct ipv4_reachability)); -	      ipreach->metrics = circuit->metrics[level - 1]; -	      ipreach->prefix = ipv4->prefix; -	      masklen2ip (ipv4->prefixlen, &ipreach->mask); -	      listnode_add (lsp->tlv_data.ipv4_int_reachs, ipreach); -	    } -	} -#ifdef HAVE_IPV6 -      /* -       * Add IPv6 reachability of this circuit -       */ -      if (circuit->ipv6_router && circuit->ipv6_non_link && -	  circuit->ipv6_non_link->count > 0) -	{ -	  if (lsp->tlv_data.ipv6_reachs == NULL) -	    { -	      lsp->tlv_data.ipv6_reachs = list_new (); -	      lsp->tlv_data.ipv6_reachs->del = free_tlv; -	    } -          for (ALL_LIST_ELEMENTS (circuit->ipv6_non_link, ipnode,  -                                  ipnnode, ipv6)) -	    { -	      ip6reach = -		XCALLOC (MTYPE_ISIS_TLV, sizeof (struct ipv6_reachability)); -	      ip6reach->metric = -		htonl (circuit->metrics[level - 1].metric_default); -	      ip6reach->control_info = 0; -	      ip6reach->prefix_len = ipv6->prefixlen; -	      memcpy (&ip6reach->prefix, ipv6->prefix.s6_addr, -		      (ipv6->prefixlen + 7) / 8); -	      listnode_add (lsp->tlv_data.ipv6_reachs, ip6reach); -	    } -	} -#endif /* HAVE_IPV6 */ - -      switch (circuit->circ_type) -	{ -	case CIRCUIT_T_BROADCAST: -	  if (level & circuit->circuit_is_type) -	    { -	      if (lsp->tlv_data.is_neighs == NULL) -		{ -		  lsp->tlv_data.is_neighs = list_new (); -		  lsp->tlv_data.is_neighs->del = free_tlv; -		} -	      is_neigh = XCALLOC (MTYPE_ISIS_TLV, sizeof (struct is_neigh)); -	      if (level == 1) -		memcpy (&is_neigh->neigh_id, -			circuit->u.bc.l1_desig_is, ISIS_SYS_ID_LEN + 1); -	      else -		memcpy (&is_neigh->neigh_id, -			circuit->u.bc.l2_desig_is, ISIS_SYS_ID_LEN + 1); -	      is_neigh->metrics = circuit->metrics[level - 1]; -	      listnode_add (lsp->tlv_data.is_neighs, is_neigh); -	    } -	  break; -	case CIRCUIT_T_P2P: -	  nei = circuit->u.p2p.neighbor; -	  if (nei && (level & nei->circuit_t)) -	    { -	      if (lsp->tlv_data.is_neighs == NULL) -		{ -		  lsp->tlv_data.is_neighs = list_new (); -		  lsp->tlv_data.is_neighs->del = free_tlv; -		} -	      is_neigh = XCALLOC (MTYPE_ISIS_TLV, sizeof (struct is_neigh)); -	      memcpy (&is_neigh->neigh_id, nei->sysid, ISIS_SYS_ID_LEN); -	      is_neigh->metrics = circuit->metrics[level - 1]; -	      listnode_add (lsp->tlv_data.is_neighs, is_neigh); -	    } -	  break; -	case CIRCUIT_T_STATIC_IN: -	  zlog_warn ("lsp_area_create: unsupported circuit type"); -	  break; -	case CIRCUIT_T_STATIC_OUT: -	  zlog_warn ("lsp_area_create: unsupported circuit type"); -	  break; -	case CIRCUIT_T_DA: -	  zlog_warn ("lsp_area_create: unsupported circuit type"); -	  break; -	default: -	  zlog_warn ("lsp_area_create: unknown circuit type"); -	} -    } - -  if (lsp->tlv_data.nlpids) -    tlv_add_nlpid (lsp->tlv_data.nlpids, lsp->pdu); -  if (lsp->tlv_data.hostname) -    tlv_add_dynamic_hostname (lsp->tlv_data.hostname, lsp->pdu); -  if (lsp->tlv_data.area_addrs && listcount (lsp->tlv_data.area_addrs) > 0) -    tlv_add_area_addrs (lsp->tlv_data.area_addrs, lsp->pdu); -  if (lsp->tlv_data.is_neighs && listcount (lsp->tlv_data.is_neighs) > 0) -    tlv_add_is_neighs (lsp->tlv_data.is_neighs, lsp->pdu); -  if (lsp->tlv_data.ipv4_int_reachs && -      listcount (lsp->tlv_data.ipv4_int_reachs) > 0) -    tlv_add_ipv4_reachs (lsp->tlv_data.ipv4_int_reachs, lsp->pdu); -#ifdef  HAVE_IPV6 -  if (lsp->tlv_data.ipv6_reachs && listcount (lsp->tlv_data.ipv6_reachs) > 0) -    tlv_add_ipv6_reachs (lsp->tlv_data.ipv6_reachs, lsp->pdu); -#endif /* HAVE_IPV6 */ - -  lsp->lsp_header->pdu_len = htons (stream_get_endp (lsp->pdu)); - -  return; -} -#endif -  #define FRAG_THOLD(S,T) \  ((STREAM_SIZE(S)*T)/100) @@ -1244,7 +1004,6 @@ lsp_next_frag (u_char frag_num, struct isis_lsp *lsp0, struct isis_area *area,   * Builds the LSP data part. This func creates a new frag whenever    * area->lsp_frag_threshold is exceeded.   */ -#if 1  static void  lsp_build_nonpseudo (struct isis_lsp *lsp, struct isis_area *area)  { @@ -1536,72 +1295,6 @@ lsp_build_nonpseudo (struct isis_lsp *lsp, struct isis_area *area)    return;  } -#endif - -#if 0 /* Old code? */ -static void -build_lsp_data (struct isis_lsp *lsp, struct isis_area *area) -{ -  struct list *circuit_list = area->circuit_list; -  struct isis_circuit *circuit; -  u_char *tlv_ptr; -  struct is_neigh *is_neigh; - - -  /* add our nlpids */ -  /* the 2 is for the TL plus 1 for the nlpid */ -  tlv_ptr = lsppdu_realloc (lsp, MTYPE_ISIS_TLV, 3); -  *tlv_ptr = PROTOCOLS_SUPPORTED;	/* Type */ -  *(tlv_ptr + 1) = 1;		/* one protocol */ -#ifdef HAVE_IPV6		/*dunno if its right */ -  *(tlv_ptr + 2) = NLPID_IPV6; -#else -  *(tlv_ptr + 2) = NLPID_IP; -#endif /* HAVE_IPV6 */ - -  /* we should add our areas here -   * FIXME: we need to figure out which should be added? Adj? All? First? */ - -  /* first, lets add ourselves to the IS neighbours info */ -  /* the 2 is for the TL plus 1 for the virtual field */ -  tlv_ptr = lsppdu_realloc (lsp, MTYPE_ISIS_TLV, 3); -  *tlv_ptr = IS_NEIGHBOURS;	/* Type */ -  *(tlv_ptr + 2) = 0;		/* virtual is zero */ -  lsp->tlv_data.is_neighs = list_new ();	/* new list of is_neighbours */ -  /* assign space for the is_neigh at the pdu end */ -  is_neigh = (struct is_neigh *) lsppdu_realloc (lsp, MTYPE_ISIS_TLV, -						 sizeof (struct is_neigh)); -  /* add this node to our list */ -  listnode_add (lsp->tlv_data.is_neighs, is_neigh); -  /* FIXME: Do we need our designated address here? */ -  memcpy (&is_neigh->neigh_id, isis->sysid, ISIS_SYS_ID_LEN + 1); -  /* FIXME: Where should we really get our own LSPs metrics from? */ -  circuit = (struct isis_circuit *) listhead (circuit_list); -  /* is_neigh->metrics = circuit->metrics[lsp->level -1]; */ -  /* Length */ -  *(tlv_ptr + 1) = -    (lsp->tlv_data.is_neighs->count * sizeof (struct is_neigh) + 1); - -  /* FIXME: scan for adjencecies and add them */ - -  /* FIXME: add reachability info */ - -  /* adding dynamic hostname if needed */ -  if (area->dynhostname) -    { -      tlv_ptr = lsppdu_realloc (lsp, MTYPE_ISIS_TLV, 2);	/* the 2 is for the TL */ -      *tlv_ptr = DYNAMIC_HOSTNAME;	/* Type */ -      *(tlv_ptr + 1) = strlen (unix_hostname ());	/* Length */ -      lsp->tlv_data.hostname = (struct hostname *) -	(lsppdu_realloc (lsp, MTYPE_ISIS_TLV, -			 /* the -1 is to fit the length in the struct */ -			 strlen (unix_hostname ())) - 1); -      memcpy (lsp->tlv_data.hostname->name, unix_hostname (), -	      strlen (unix_hostname ())); -    } - -} -#endif /* 0 */  /*   * 7.3.7 Generation on non-pseudonode LSPs diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c index 87f37901..591b4912 100644 --- a/isisd/isis_pdu.c +++ b/isisd/isis_pdu.c @@ -2452,19 +2452,6 @@ send_l2_psnp (struct thread *thread)    return retval;  } -/* FIXME: Not used any more? */ -/* static void -build_link_state (struct isis_lsp *lsp, struct isis_circuit *circuit, -		  struct stream *stream) -{ -  unsigned long length; - -  stream_put (stream, lsp->pdu, ntohs (lsp->lsp_header->pdu_len)); -  length = stream_get_endp (stream); - -  return; -} */ -  /*   * ISO 10589 - 7.3.14.3   */ @@ -2606,91 +2593,3 @@ ack_lsp (struct isis_link_state_hdr *hdr, struct isis_circuit *circuit,    return retval;  } -#if 0 -/* - * ISH PDU Processing  - */ - -  /* -   * Let's first check if the local and remote system have any common area -   * addresses  -   */ -if (area_match (tlvs.area_addrs, isis->man_area_addrs) == 0) -  { -    if (circuit->circuit_t == IS_LEVEL_2) -      { -	/* do as in table 8 (p. 40) */ -	switch (circuit_type) -	  { -	  case IS_LEVEL_1: -	    if (adj->adj_state != ISIS_ADJ_UP) -	      { -		/* Reject */ -		zlog_warn ("areaMismatch"); -		retval = ISIS_WARNING; -	      } -	    else if (adj->adj_usage == ISIS_ADJ_LEVEL1) -	      { -		isis_adj_state_change (adj, ISIS_ADJ_DOWN, "Area Mismatch", -				       circuit->adjdb); -	      } -	    else if (adj->adj_usage == ISIS_ADJ_LEVEL1AND2 || -		     adj->adj_usage == ISIS_ADJ_LEVEL2) -	      { -		isis_adj_state_change (adj, ISIS_ADJ_DOWN, "Wrong System", -				       circuit->adjdb); -	      } -	    break; -	  case IS_LEVEL_2: -	    if (adj->adj_state != ISIS_ADJ_UP) -	      { -		isis_adj_state_change (adj, ISIS_ADJ_UP, NULL, -				       circuit->adjdb); -		adj->adj_usage = ISIS_ADJ_LEVEL2; -	      } -	    else if (adj->adj_usage == ISIS_ADJ_LEVEL1 || -		     adj->adj_usage == ISIS_ADJ_LEVEL1AND2) -	      { -		isis_adj_state_change (adj, ISIS_ADJ_DOWN, "Wrong System", -				       circuit->adjdb); -	      } -	    else if (adj->adj_usage == ISIS_ADJ_LEVEL2) -	      { -		;		/* Accept */ -	      } -	    break; -	  case IS_LEVEL_1_AND_2: -	    if (adj->adj_state != ISIS_ADJ_UP) -	      { -		isis_adj_state_change (adj, ISIS_ADJ_UP, NULL, -				       circuit->adjdb); -		adj->adj_usage = ISIS_ADJ_LEVEL2; -	      } -	    else if (adj->adj_usage == ISIS_ADJ_LEVEL1) -	      { -		isis_adj_state_change (adj, ISIS_ADJ_DOWN, "Wrong System", -				       circuit->adjdb); -	      } -	    else if (adj->adj_usage == ISIS_ADJ_LEVEL1AND2) -	      { -		isis_adj_state_change (adj, ISIS_ADJ_DOWN, "Area Mismatch", -				       circuit->adjdb); -	      } -	    else if (adj->adj_usage == ISIS_ADJ_LEVEL2) -	      { -		;		/* Accept */ -	      } -	    break; -	  } -	goto mismatch; -      } -    else -      { -	isis_delete_adj (adj, circuit->adjdb); -	zlog_warn ("areaMismatch"); -	return ISIS_WARNING; -      } -  } - -mismatch: -#endif diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c index ba7acbfb..1a5a2db0 100644 --- a/isisd/isis_spf.c +++ b/isisd/isis_spf.c @@ -58,28 +58,6 @@ extern struct host host;  int isis_run_spf_l1 (struct thread *thread);  int isis_run_spf_l2 (struct thread *thread); -#if 0 -/* performace issue ???? HT: Old or new code? */ -static void -union_adjlist (struct list *target, struct list *source) -{ -  struct isis_adjacency *adj, *adj2; -  struct listnode *node, *node2; - -  zlog_debug ("Union adjlist!"); -  for (ALL_LIST_ELEMENTS_RO (source, node, adj)) -    { -      /* lookup adjacency in the source list */ -      for (ALL_LIST_ELEMENTS_RO (target, node2, adj2)) -        if (adj == adj2) -	    break; -       -      if (!node2) -	listnode_add (target, adj); -    } -} -#endif -  /* 7.2.7 */  static void  remove_excess_adjs (struct list *adjs) | 
