Page MenuHomeFreeBSD

D36162.id109228.diff
No OneTemporary

D36162.id109228.diff

Index: sys/netinet6/frag6.c
===================================================================
--- sys/netinet6/frag6.c
+++ sys/netinet6/frag6.c
@@ -883,8 +883,9 @@
* IPv6 reassembling timer processing;
* if a timer expires on a reassembly queue, discard it.
*/
+struct callout frag6_callout;
void
-frag6_slowtimo(void)
+frag6_slowtimo(void *arg __unused)
{
VNET_ITERATOR_DECL(vnet_iter);
struct ip6qhead *head;
@@ -892,7 +893,7 @@
uint32_t bucket;
if (atomic_load_int(&frag6_nfrags) == 0)
- return;
+ goto done;
VNET_LIST_RLOCK_NOSLEEP();
VNET_FOREACH(vnet_iter) {
@@ -949,6 +950,8 @@
CURVNET_RESTORE();
}
VNET_LIST_RUNLOCK_NOSLEEP();
+done:
+ callout_reset(&frag6_callout, hz / 2, frag6_slowtimo, NULL);
}
/*
Index: sys/netinet6/in6_proto.c
===================================================================
--- sys/netinet6/in6_proto.c
+++ sys/netinet6/in6_proto.c
@@ -144,7 +144,6 @@
.pr_domain = &inet6domain,
.pr_protocol = IPPROTO_IPV6,
.pr_flags = PR_CAPATTACH,
- .pr_slowtimo = frag6_slowtimo,
.pr_drain = frag6_drain,
},
{
Index: sys/netinet6/ip6_input.c
===================================================================
--- sys/netinet6/ip6_input.c
+++ sys/netinet6/ip6_input.c
@@ -295,6 +295,9 @@
IP6PROTO_REGISTER(IPPROTO_SCTP, sctp6_input, sctp6_ctlinput);
#endif
+ callout_init(&frag6_callout, 1);
+ callout_reset(&frag6_callout, hz / 2, frag6_slowtimo, NULL);
+
netisr_register(&ip6_nh);
#ifdef RSS
netisr_register(&ip6_direct_nh);
Index: sys/netinet6/ip6_var.h
===================================================================
--- sys/netinet6/ip6_var.h
+++ sys/netinet6/ip6_var.h
@@ -391,7 +391,8 @@
void frag6_init(void);
void frag6_destroy(void);
int frag6_input(struct mbuf **, int *, int);
-void frag6_slowtimo(void);
+extern struct callout frag6_callout;
+void frag6_slowtimo(void *);
void frag6_drain(void);
void rip6_init(void);

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 21, 7:53 AM (20 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17666280
Default Alt Text
D36162.id109228.diff (1 KB)

Event Timeline