Deleted Added
full compact
uipc_domain.c (160619) uipc_domain.c (169624)
1/*-
2 * Copyright (c) 1982, 1986, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 16 unchanged lines hidden (view full) ---

25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * @(#)uipc_domain.c 8.2 (Berkeley) 10/18/93
30 */
31
32#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1982, 1986, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 16 unchanged lines hidden (view full) ---

25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * @(#)uipc_domain.c 8.2 (Berkeley) 10/18/93
30 */
31
32#include <sys/cdefs.h>
33__FBSDID("$FreeBSD: head/sys/kern/uipc_domain.c 160619 2006-07-24 15:20:08Z rwatson $");
33__FBSDID("$FreeBSD: head/sys/kern/uipc_domain.c 169624 2007-05-16 20:41:08Z rwatson $");
34
35#include <sys/param.h>
36#include <sys/socket.h>
37#include <sys/protosw.h>
38#include <sys/domain.h>
39#include <sys/eventhandler.h>
40#include <sys/mbuf.h>
41#include <sys/kernel.h>

--- 150 unchanged lines hidden (view full) ---

192
193 uma_zone_set_max(socket_zone, maxsockets);
194}
195
196/* ARGSUSED*/
197static void
198domaininit(void *dummy)
199{
34
35#include <sys/param.h>
36#include <sys/socket.h>
37#include <sys/protosw.h>
38#include <sys/domain.h>
39#include <sys/eventhandler.h>
40#include <sys/mbuf.h>
41#include <sys/kernel.h>

--- 150 unchanged lines hidden (view full) ---

192
193 uma_zone_set_max(socket_zone, maxsockets);
194}
195
196/* ARGSUSED*/
197static void
198domaininit(void *dummy)
199{
200
200 /*
201 * Before we do any setup, make sure to initialize the
202 * zone allocator we get struct sockets from.
203 */
201 /*
202 * Before we do any setup, make sure to initialize the
203 * zone allocator we get struct sockets from.
204 */
204
205 socket_zone = uma_zcreate("socket", sizeof(struct socket), NULL, NULL,
206 NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE);
207 uma_zone_set_max(socket_zone, maxsockets);
208 EVENTHANDLER_REGISTER(maxsockets_change, socket_zone_change, NULL,
209 EVENTHANDLER_PRI_FIRST);
210
211 if (max_linkhdr < 16) /* XXX */
212 max_linkhdr = 16;

--- 11 unchanged lines hidden (view full) ---

224 domain_init_status = 1;
225 mtx_unlock(&dom_mtx);
226}
227
228/* ARGSUSED*/
229static void
230domainfinalize(void *dummy)
231{
205 socket_zone = uma_zcreate("socket", sizeof(struct socket), NULL, NULL,
206 NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE);
207 uma_zone_set_max(socket_zone, maxsockets);
208 EVENTHANDLER_REGISTER(maxsockets_change, socket_zone_change, NULL,
209 EVENTHANDLER_PRI_FIRST);
210
211 if (max_linkhdr < 16) /* XXX */
212 max_linkhdr = 16;

--- 11 unchanged lines hidden (view full) ---

224 domain_init_status = 1;
225 mtx_unlock(&dom_mtx);
226}
227
228/* ARGSUSED*/
229static void
230domainfinalize(void *dummy)
231{
232
232 mtx_lock(&dom_mtx);
233 KASSERT(domain_init_status == 1, ("domainfinalize called too late!"));
234 domain_init_status = 2;
235 mtx_unlock(&dom_mtx);
236
237 callout_reset(&pffast_callout, 1, pffasttimo, NULL);
238 callout_reset(&pfslow_callout, 1, pfslowtimo, NULL);
239}
240
241struct protosw *
233 mtx_lock(&dom_mtx);
234 KASSERT(domain_init_status == 1, ("domainfinalize called too late!"));
235 domain_init_status = 2;
236 mtx_unlock(&dom_mtx);
237
238 callout_reset(&pffast_callout, 1, pffasttimo, NULL);
239 callout_reset(&pfslow_callout, 1, pfslowtimo, NULL);
240}
241
242struct protosw *
242pffindtype(family, type)
243 int family;
244 int type;
243pffindtype(int family, int type)
245{
244{
246 register struct domain *dp;
247 register struct protosw *pr;
245 struct domain *dp;
246 struct protosw *pr;
248
249 for (dp = domains; dp; dp = dp->dom_next)
250 if (dp->dom_family == family)
251 goto found;
252 return (0);
253found:
254 for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
255 if (pr->pr_type && pr->pr_type == type)
256 return (pr);
257 return (0);
258}
259
260struct protosw *
247
248 for (dp = domains; dp; dp = dp->dom_next)
249 if (dp->dom_family == family)
250 goto found;
251 return (0);
252found:
253 for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
254 if (pr->pr_type && pr->pr_type == type)
255 return (pr);
256 return (0);
257}
258
259struct protosw *
261pffindproto(family, protocol, type)
262 int family;
263 int protocol;
264 int type;
260pffindproto(int family, int protocol, int type)
265{
261{
266 register struct domain *dp;
267 register struct protosw *pr;
262 struct domain *dp;
263 struct protosw *pr;
268 struct protosw *maybe = 0;
269
270 if (family == 0)
271 return (0);
272 for (dp = domains; dp; dp = dp->dom_next)
273 if (dp->dom_family == family)
274 goto found;
275 return (0);

--- 9 unchanged lines hidden (view full) ---

285 return (maybe);
286}
287
288/*
289 * The caller must make sure that the new protocol is fully set up and ready to
290 * accept requests before it is registered.
291 */
292int
264 struct protosw *maybe = 0;
265
266 if (family == 0)
267 return (0);
268 for (dp = domains; dp; dp = dp->dom_next)
269 if (dp->dom_family == family)
270 goto found;
271 return (0);

--- 9 unchanged lines hidden (view full) ---

281 return (maybe);
282}
283
284/*
285 * The caller must make sure that the new protocol is fully set up and ready to
286 * accept requests before it is registered.
287 */
288int
293pf_proto_register(family, npr)
294 int family;
295 struct protosw *npr;
289pf_proto_register(int family, struct protosw *npr)
296{
297 struct domain *dp;
298 struct protosw *pr, *fpr;
299
300 /* Sanity checks. */
301 if (family == 0)
302 return (EPFNOSUPPORT);
303 if (npr->pr_type == 0)

--- 50 unchanged lines hidden (view full) ---

354 return (0);
355}
356
357/*
358 * The caller must make sure the protocol and its functions correctly shut down
359 * all sockets and release all locks and memory references.
360 */
361int
290{
291 struct domain *dp;
292 struct protosw *pr, *fpr;
293
294 /* Sanity checks. */
295 if (family == 0)
296 return (EPFNOSUPPORT);
297 if (npr->pr_type == 0)

--- 50 unchanged lines hidden (view full) ---

348 return (0);
349}
350
351/*
352 * The caller must make sure the protocol and its functions correctly shut down
353 * all sockets and release all locks and memory references.
354 */
355int
362pf_proto_unregister(family, protocol, type)
363 int family;
364 int protocol;
365 int type;
356pf_proto_unregister(int family, int protocol, int type)
366{
367 struct domain *dp;
368 struct protosw *pr, *dpr;
369
370 /* Sanity checks. */
371 if (family == 0)
372 return (EPFNOSUPPORT);
373 if (protocol == 0)

--- 48 unchanged lines hidden (view full) ---

422
423 /* Job is done, not more protection required. */
424 mtx_unlock(&Giant);
425
426 return (0);
427}
428
429void
357{
358 struct domain *dp;
359 struct protosw *pr, *dpr;
360
361 /* Sanity checks. */
362 if (family == 0)
363 return (EPFNOSUPPORT);
364 if (protocol == 0)

--- 48 unchanged lines hidden (view full) ---

413
414 /* Job is done, not more protection required. */
415 mtx_unlock(&Giant);
416
417 return (0);
418}
419
420void
430pfctlinput(cmd, sa)
431 int cmd;
432 struct sockaddr *sa;
421pfctlinput(int cmd, struct sockaddr *sa)
433{
422{
434 register struct domain *dp;
435 register struct protosw *pr;
423 struct domain *dp;
424 struct protosw *pr;
436
437 for (dp = domains; dp; dp = dp->dom_next)
438 for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
439 if (pr->pr_ctlinput)
440 (*pr->pr_ctlinput)(cmd, sa, (void *)0);
441}
442
443void
425
426 for (dp = domains; dp; dp = dp->dom_next)
427 for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
428 if (pr->pr_ctlinput)
429 (*pr->pr_ctlinput)(cmd, sa, (void *)0);
430}
431
432void
444pfctlinput2(cmd, sa, ctlparam)
445 int cmd;
446 struct sockaddr *sa;
447 void *ctlparam;
433pfctlinput2(int cmd, struct sockaddr *sa, void *ctlparam)
448{
449 struct domain *dp;
450 struct protosw *pr;
451
452 if (!sa)
453 return;
454 for (dp = domains; dp; dp = dp->dom_next) {
455 /*

--- 6 unchanged lines hidden (view full) ---

462
463 for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
464 if (pr->pr_ctlinput)
465 (*pr->pr_ctlinput)(cmd, sa, ctlparam);
466 }
467}
468
469static void
434{
435 struct domain *dp;
436 struct protosw *pr;
437
438 if (!sa)
439 return;
440 for (dp = domains; dp; dp = dp->dom_next) {
441 /*

--- 6 unchanged lines hidden (view full) ---

448
449 for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
450 if (pr->pr_ctlinput)
451 (*pr->pr_ctlinput)(cmd, sa, ctlparam);
452 }
453}
454
455static void
470pfslowtimo(arg)
471 void *arg;
456pfslowtimo(void *arg)
472{
457{
473 register struct domain *dp;
474 register struct protosw *pr;
458 struct domain *dp;
459 struct protosw *pr;
475
476 NET_ASSERT_GIANT();
477
478 for (dp = domains; dp; dp = dp->dom_next)
479 for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
480 if (pr->pr_slowtimo)
481 (*pr->pr_slowtimo)();
482 callout_reset(&pfslow_callout, hz/2, pfslowtimo, NULL);
483}
484
485static void
460
461 NET_ASSERT_GIANT();
462
463 for (dp = domains; dp; dp = dp->dom_next)
464 for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
465 if (pr->pr_slowtimo)
466 (*pr->pr_slowtimo)();
467 callout_reset(&pfslow_callout, hz/2, pfslowtimo, NULL);
468}
469
470static void
486pffasttimo(arg)
487 void *arg;
471pffasttimo(void *arg)
488{
472{
489 register struct domain *dp;
490 register struct protosw *pr;
473 struct domain *dp;
474 struct protosw *pr;
491
492 NET_ASSERT_GIANT();
493
494 for (dp = domains; dp; dp = dp->dom_next)
495 for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
496 if (pr->pr_fasttimo)
497 (*pr->pr_fasttimo)();
498 callout_reset(&pffast_callout, hz/5, pffasttimo, NULL);
499}
475
476 NET_ASSERT_GIANT();
477
478 for (dp = domains; dp; dp = dp->dom_next)
479 for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
480 if (pr->pr_fasttimo)
481 (*pr->pr_fasttimo)();
482 callout_reset(&pffast_callout, hz/5, pffasttimo, NULL);
483}