| version 1.117, 2008/04/23 06:09:05 |
version 1.118, 2008/04/24 11:38:38 |
| Line 206 ip6_init2(void *dummy) |
|
| Line 206 ip6_init2(void *dummy) |
|
| { |
{ |
| |
|
| /* nd6_timer_init */ |
/* nd6_timer_init */ |
| callout_init(&nd6_timer_ch, 0); |
callout_init(&nd6_timer_ch, CALLOUT_MPSAFE); |
| callout_reset(&nd6_timer_ch, hz, nd6_timer, NULL); |
callout_reset(&nd6_timer_ch, hz, nd6_timer, NULL); |
| |
|
| /* timer for regeneranation of temporary addresses randomize ID */ |
/* timer for regeneranation of temporary addresses randomize ID */ |
| callout_init(&in6_tmpaddrtimer_ch, 0); |
callout_init(&in6_tmpaddrtimer_ch, CALLOUT_MPSAFE); |
| callout_reset(&in6_tmpaddrtimer_ch, |
callout_reset(&in6_tmpaddrtimer_ch, |
| (ip6_temp_preferred_lifetime - ip6_desync_factor - |
(ip6_temp_preferred_lifetime - ip6_desync_factor - |
| ip6_temp_regen_advance) * hz, |
ip6_temp_regen_advance) * hz, |
|
|
| int s; |
int s; |
| struct mbuf *m; |
struct mbuf *m; |
| |
|
| |
mutex_enter(softnet_lock); |
| |
KERNEL_LOCK(1, NULL); |
| for (;;) { |
for (;;) { |
| s = splnet(); |
s = splnet(); |
| IF_DEQUEUE(&ip6intrq, m); |
IF_DEQUEUE(&ip6intrq, m); |
| splx(s); |
splx(s); |
| if (m == 0) |
if (m == 0) |
| return; |
break; |
| /* drop the packet if IPv6 operation is disabled on the IF */ |
/* drop the packet if IPv6 operation is disabled on the IF */ |
| if ((ND_IFINFO(m->m_pkthdr.rcvif)->flags & ND6_IFF_IFDISABLED)) { |
if ((ND_IFINFO(m->m_pkthdr.rcvif)->flags & ND6_IFF_IFDISABLED)) { |
| m_freem(m); |
m_freem(m); |
| return; |
break; |
| } |
} |
| ip6_input(m); |
ip6_input(m); |
| } |
} |
| |
KERNEL_UNLOCK_ONE(NULL); |
| |
mutex_exit(softnet_lock); |
| } |
} |
| |
|
| extern struct route ip6_forward_rt; |
extern struct route ip6_forward_rt; |