2004-09-20 LIU Xin <lx at ns.6test.edu.cn>

* isis_dr.c, isis_events.c: Remove hello multiplier usage while scheduling
  DIS election.
* isis_pdu.c: Don't call isis_event_dis_status_change() whenever
  l[1|2]_desig_is is different from hdr.lan_id.
This commit is contained in:
hasso 2004-09-20 14:55:29 +00:00
parent 12a5cae75e
commit a211d65dfd
4 changed files with 27 additions and 44 deletions

View file

@ -1,3 +1,10 @@
2004-09-20 LIU Xin <lx at ns.6test.edu.cn>
* isis_dr.c, isis_events.c: Remove hello multiplier usage while
scheduling DIS election.
* isis_pdu.c: Don't call isis_event_dis_status_change() whenever
l[1|2]_desig_is is different from hdr.lan_id.
2004-09-19 Hasso Tepper <hasso at quagga.net> 2004-09-19 Hasso Tepper <hasso at quagga.net>
* isis_spf.h: Renamed t_spf_periodic to t_spf as it's not used to * isis_spf.h: Renamed t_spf_periodic to t_spf as it's not used to

View file

@ -311,12 +311,10 @@ isis_dr_commence (struct isis_circuit *circuit, int level)
circuit->u.bc.run_dr_elect[level - 1] = 0; circuit->u.bc.run_dr_elect[level - 1] = 0;
if (level == 1) if (level == 1)
THREAD_TIMER_ON (master, circuit->u.bc.t_run_dr[0], isis_run_dr_l1, THREAD_TIMER_ON (master, circuit->u.bc.t_run_dr[0], isis_run_dr_l1,
circuit, 2 * circuit->hello_multiplier[0] * circuit, 2 * circuit->hello_interval[0]);
circuit->hello_interval[0]);
else else
THREAD_TIMER_ON (master, circuit->u.bc.t_run_dr[1], isis_run_dr_l2, THREAD_TIMER_ON (master, circuit->u.bc.t_run_dr[1], isis_run_dr_l2,
circuit, 2 * circuit->hello_multiplier[1] * circuit, 2 * circuit->hello_interval[1]);
circuit->hello_interval[1]);
circuit->u.bc.is_dr[level - 1] = 1; circuit->u.bc.is_dr[level - 1] = 1;
if (level == 1) if (level == 1)

View file

@ -146,8 +146,6 @@ isis_event_area_addr_change (struct isis_area *area)
void void
circuit_commence_level (struct isis_circuit *circuit, int level) circuit_commence_level (struct isis_circuit *circuit, int level)
{ {
uint32_t interval;
if (level == 1) if (level == 1)
{ {
THREAD_TIMER_ON (master, circuit->t_send_psnp[0], send_l1_psnp, circuit, THREAD_TIMER_ON (master, circuit->t_send_psnp[0], send_l1_psnp, circuit,
@ -155,11 +153,8 @@ circuit_commence_level (struct isis_circuit *circuit, int level)
if (circuit->circ_type == CIRCUIT_T_BROADCAST) if (circuit->circ_type == CIRCUIT_T_BROADCAST)
{ {
interval =
circuit->hello_multiplier[0] * (circuit->hello_interval[0]);
THREAD_TIMER_ON (master, circuit->u.bc.t_run_dr[0], isis_run_dr_l1, THREAD_TIMER_ON (master, circuit->u.bc.t_run_dr[0], isis_run_dr_l1,
circuit, interval); circuit, 2 * circuit->hello_interval[1]);
THREAD_TIMER_ON (master, circuit->u.bc.t_send_lan_hello[0], THREAD_TIMER_ON (master, circuit->u.bc.t_send_lan_hello[0],
send_lan_l1_hello, circuit, send_lan_l1_hello, circuit,
@ -176,11 +171,8 @@ circuit_commence_level (struct isis_circuit *circuit, int level)
if (circuit->circ_type == CIRCUIT_T_BROADCAST) if (circuit->circ_type == CIRCUIT_T_BROADCAST)
{ {
interval =
circuit->hello_multiplier[1] * (circuit->hello_interval[1]);
THREAD_TIMER_ON (master, circuit->u.bc.t_run_dr[1], isis_run_dr_l2, THREAD_TIMER_ON (master, circuit->u.bc.t_run_dr[1], isis_run_dr_l2,
circuit, interval); circuit, 2 * circuit->hello_interval[1]);
THREAD_TIMER_ON (master, circuit->u.bc.t_send_lan_hello[1], THREAD_TIMER_ON (master, circuit->u.bc.t_send_lan_hello[1],
send_lan_l2_hello, circuit, send_lan_l2_hello, circuit,

View file

@ -825,40 +825,26 @@ process_lan_hello (int level, struct isis_circuit *circuit, u_char * ssnpa)
circuit->u.bc.lan_neighs[level - 1]); circuit->u.bc.lan_neighs[level - 1]);
} }
switch (level) if(adj->dis_record[level-1].dis==ISIS_IS_DIS)
{ switch (level)
case 1: {
if (memcmp (circuit->u.bc.l1_desig_is, hdr.lan_id, ISIS_SYS_ID_LEN + 1)) case 1:
{ if (memcmp (circuit->u.bc.l1_desig_is, hdr.lan_id, ISIS_SYS_ID_LEN + 1))
thread_add_event (master, isis_event_dis_status_change, circuit, 0); {
if (adj->dis_record[level-1].dis == ISIS_IS_DIS) thread_add_event (master, isis_event_dis_status_change, circuit, 0);
memcpy (&circuit->u.bc.l1_desig_is, hdr.lan_id, memcpy (&circuit->u.bc.l1_desig_is, hdr.lan_id,
ISIS_SYS_ID_LEN + 1); ISIS_SYS_ID_LEN + 1);
} }
break; break;
case 2: case 2:
if (memcmp (circuit->u.bc.l2_desig_is, hdr.lan_id, ISIS_SYS_ID_LEN + 1)) if (memcmp (circuit->u.bc.l2_desig_is, hdr.lan_id, ISIS_SYS_ID_LEN + 1))
{ {
thread_add_event (master, isis_event_dis_status_change, circuit, 0); thread_add_event (master, isis_event_dis_status_change, circuit, 0);
if (adj->dis_record[level-1].dis == ISIS_IS_DIS)
memcpy (&circuit->u.bc.l2_desig_is, hdr.lan_id, memcpy (&circuit->u.bc.l2_desig_is, hdr.lan_id,
ISIS_SYS_ID_LEN + 1); ISIS_SYS_ID_LEN + 1);
} }
break; break;
} }
#if 0
/* Old solution: believe the lan-header always
*/
if (level == 1)
{
memcpy (circuit->u.bc.l1_desig_is, hdr.lan_id, ISIS_SYS_ID_LEN + 1);
}
else if (level == 2)
{
memcpy (circuit->u.bc.l2_desig_is, hdr.lan_id, ISIS_SYS_ID_LEN + 1);
}
#endif
adj->hold_time = hdr.hold_time; adj->hold_time = hdr.hold_time;
adj->last_upd = time (NULL); adj->last_upd = time (NULL);