diff options
author | Jason Wright <jason@cvs.openbsd.org> | 2003-02-16 19:54:21 +0000 |
---|---|---|
committer | Jason Wright <jason@cvs.openbsd.org> | 2003-02-16 19:54:21 +0000 |
commit | ca464888ff0bb2738c5ff4f1e6025280e0ea6d19 (patch) | |
tree | feadcb09f522c8597ede02d3a50521e9ef3a1ca3 /sys/net/pfkey.c | |
parent | 0ee786dc6bdc3a051e9700a9437bca89821fc1a2 (diff) |
KNF
Diffstat (limited to 'sys/net/pfkey.c')
-rw-r--r-- | sys/net/pfkey.c | 359 |
1 files changed, 183 insertions, 176 deletions
diff --git a/sys/net/pfkey.c b/sys/net/pfkey.c index 1d3d09b3054..628c0028b67 100644 --- a/sys/net/pfkey.c +++ b/sys/net/pfkey.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pfkey.c,v 1.12 2002/12/11 21:48:40 fgsch Exp $ */ +/* $OpenBSD: pfkey.c,v 1.13 2003/02/16 19:54:20 jason Exp $ */ /* * @(#)COPYRIGHT 1.1 (NRL) 17 January 1995 @@ -83,7 +83,8 @@ #include <net/raw_cb.h> #define PFKEY_PROTOCOL_MAX 3 -static struct pfkey_version *pfkey_versions[PFKEY_PROTOCOL_MAX+1] = { NULL, NULL, NULL, NULL }; +static struct pfkey_version *pfkey_versions[PFKEY_PROTOCOL_MAX+1] = + { NULL, NULL, NULL, NULL }; #define PFKEY_MSG_MAXSZ 4096 @@ -91,262 +92,268 @@ struct sockaddr pfkey_addr = { 2, PF_KEY, }; /* static struct domain pfkey_domain; */ static int pfkey_usrreq(struct socket *socket, int req, struct mbuf *mbuf, - struct mbuf *nam, struct mbuf *control); + struct mbuf *nam, struct mbuf *control); static int pfkey_output(struct mbuf *mbuf, struct socket *socket); int pfkey_register(struct pfkey_version *version); int pfkey_unregister(struct pfkey_version *version); int pfkey_sendup(struct socket *socket, struct mbuf *packet, int more); void pfkey_init(void); -static int pfkey_buildprotosw(void); +int pfkey_buildprotosw(void); int pfkey_register(struct pfkey_version *version) { - int rval; + int rval; - if ((version->protocol > PFKEY_PROTOCOL_MAX) || (version->protocol < 0)) - return EPROTONOSUPPORT; + if ((version->protocol > PFKEY_PROTOCOL_MAX) || + (version->protocol < 0)) + return (EPROTONOSUPPORT); - if (pfkey_versions[version->protocol]) - return EADDRINUSE; + if (pfkey_versions[version->protocol]) + return (EADDRINUSE); - pfkey_versions[version->protocol] = version; + pfkey_versions[version->protocol] = version; - if ((rval = pfkey_buildprotosw()) != 0) { - pfkey_versions[version->protocol] = NULL; - return rval; - } + if ((rval = pfkey_buildprotosw()) != 0) { + pfkey_versions[version->protocol] = NULL; + return (rval); + } - return 0; + return (0); } int pfkey_unregister(struct pfkey_version *version) { - int rval; + int rval; - if ((rval = pfkey_buildprotosw()) != 0) - return rval; + if ((rval = pfkey_buildprotosw()) != 0) + return (rval); - pfkey_versions[version->protocol] = NULL; - return 0; + pfkey_versions[version->protocol] = NULL; + return (0); } int pfkey_sendup(struct socket *socket, struct mbuf *packet, int more) { - struct mbuf *packet2; - int s; - - if (more) { - if (!(packet2 = m_copym2(packet, 0, M_COPYALL, M_DONTWAIT))) - return ENOMEM; - } else - packet2 = packet; - - s = spltdb(); - if (!sbappendaddr(&socket->so_rcv, &pfkey_addr, packet2, NULL)) { - m_freem(packet2); - splx(s); - return ENOBUFS; - } - splx(s); - - sorwakeup(socket); - return 0; + struct mbuf *packet2; + int s; + + if (more) { + if (!(packet2 = m_copym2(packet, 0, M_COPYALL, M_DONTWAIT))) + return (ENOMEM); + } else + packet2 = packet; + + s = spltdb(); + if (!sbappendaddr(&socket->so_rcv, &pfkey_addr, packet2, NULL)) { + m_freem(packet2); + splx(s); + return (ENOBUFS); + } + splx(s); + + sorwakeup(socket); + return (0); } static int pfkey_output(struct mbuf *mbuf, struct socket *socket) { - void *message; - int error = 0; + void *message; + int error = 0; #if DIAGNOSTIC - if (!mbuf || !(mbuf->m_flags & M_PKTHDR)) { - error = EINVAL; - goto ret; - } + if (!mbuf || !(mbuf->m_flags & M_PKTHDR)) { + error = EINVAL; + goto ret; + } #endif /* DIAGNOSTIC */ - if (mbuf->m_pkthdr.len > PFKEY_MSG_MAXSZ) { - error = EMSGSIZE; - goto ret; - } + if (mbuf->m_pkthdr.len > PFKEY_MSG_MAXSZ) { + error = EMSGSIZE; + goto ret; + } - if (!(message = malloc((unsigned long) mbuf->m_pkthdr.len, M_PFKEY, - M_DONTWAIT))) { - error = ENOMEM; - goto ret; - } + if (!(message = malloc((unsigned long) mbuf->m_pkthdr.len, + M_PFKEY, M_DONTWAIT))) { + error = ENOMEM; + goto ret; + } - m_copydata(mbuf, 0, mbuf->m_pkthdr.len, message); + m_copydata(mbuf, 0, mbuf->m_pkthdr.len, message); - error = - pfkey_versions[socket->so_proto->pr_protocol]->send(socket, message, - mbuf->m_pkthdr.len); + error = pfkey_versions[socket->so_proto->pr_protocol]->send(socket, + message, mbuf->m_pkthdr.len); - ret: - if (mbuf) - m_freem (mbuf); - return error; +ret: + if (mbuf) + m_freem (mbuf); + return (error); } static int pfkey_attach(struct socket *socket, struct mbuf *proto) { - int rval; - int s; + int rval; + int s; - if (!(socket->so_pcb = malloc(sizeof(struct rawcb), M_PCB, M_DONTWAIT))) - return ENOMEM; - bzero(socket->so_pcb, sizeof(struct rawcb)); + if (!(socket->so_pcb = malloc(sizeof(struct rawcb), + M_PCB, M_DONTWAIT))) + return (ENOMEM); + bzero(socket->so_pcb, sizeof(struct rawcb)); - s = splnet(); - rval = raw_usrreq(socket, PRU_ATTACH, NULL, proto, NULL); - splx(s); - if (rval) - goto ret; + s = splnet(); + rval = raw_usrreq(socket, PRU_ATTACH, NULL, proto, NULL); + splx(s); + if (rval) + goto ret; - ((struct rawcb *)socket->so_pcb)->rcb_faddr = &pfkey_addr; - soisconnected(socket); + ((struct rawcb *)socket->so_pcb)->rcb_faddr = &pfkey_addr; + soisconnected(socket); - socket->so_options |= SO_USELOOPBACK; - if ((rval = pfkey_versions[socket->so_proto->pr_protocol]->create(socket)) - != 0) - goto ret; + socket->so_options |= SO_USELOOPBACK; + if ((rval = + pfkey_versions[socket->so_proto->pr_protocol]->create(socket)) != 0) + goto ret; - return 0; + return (0); ret: - free(socket->so_pcb, M_PCB); - return rval; + free(socket->so_pcb, M_PCB); + return (rval); } static int pfkey_detach(struct socket *socket) { - int rval, i, s; + int rval, i, s; - rval = pfkey_versions[socket->so_proto->pr_protocol]->release(socket); - s = splnet(); - i = raw_usrreq(socket, PRU_DETACH, NULL, NULL, NULL); - splx(s); + rval = pfkey_versions[socket->so_proto->pr_protocol]->release(socket); + s = splnet(); + i = raw_usrreq(socket, PRU_DETACH, NULL, NULL, NULL); + splx(s); - if (!rval) - rval = i; + if (!rval) + rval = i; - return rval; + return (rval); } static int pfkey_usrreq(struct socket *socket, int req, struct mbuf *mbuf, - struct mbuf *nam, struct mbuf *control) + struct mbuf *nam, struct mbuf *control) { - int rval; - int s; + int rval; + int s; - if ((socket->so_proto->pr_protocol > PFKEY_PROTOCOL_MAX) || - (socket->so_proto->pr_protocol < 0) || - !pfkey_versions[socket->so_proto->pr_protocol]) - return EPROTONOSUPPORT; + if ((socket->so_proto->pr_protocol > PFKEY_PROTOCOL_MAX) || + (socket->so_proto->pr_protocol < 0) || + !pfkey_versions[socket->so_proto->pr_protocol]) + return (EPROTONOSUPPORT); - switch(req) { - case PRU_ATTACH: - return pfkey_attach(socket, nam); + switch(req) { + case PRU_ATTACH: + return (pfkey_attach(socket, nam)); - case PRU_DETACH: - return pfkey_detach(socket); + case PRU_DETACH: + return (pfkey_detach(socket)); - default: - s = splnet(); - rval = raw_usrreq(socket, req, mbuf, nam, control); - splx(s); - } + default: + s = splnet(); + rval = raw_usrreq(socket, req, mbuf, nam, control); + splx(s); + } - return rval; + return (rval); } static struct domain pfkey_domain = { - PF_KEY, - "PF_KEY", - NULL, /* init */ - NULL, /* externalize */ - NULL, /* dispose */ - NULL, /* protosw */ - NULL, /* protoswNPROTOSW */ - NULL, /* dom_next */ - rn_inithead, /* dom_rtattach */ - 16, /* rtoffset */ - sizeof(struct sockaddr_encap) /* maxrtkey */ + PF_KEY, + "PF_KEY", + NULL, /* init */ + NULL, /* externalize */ + NULL, /* dispose */ + NULL, /* protosw */ + NULL, /* protoswNPROTOSW */ + NULL, /* dom_next */ + rn_inithead, /* dom_rtattach */ + 16, /* rtoffset */ + sizeof(struct sockaddr_encap) /* maxrtkey */ }; static struct protosw pfkey_protosw_template = { - SOCK_RAW, - &pfkey_domain, - -1, /* protocol */ - PR_ATOMIC | PR_ADDR, - (void *) raw_input, - (void *) pfkey_output, - (void *) raw_ctlinput, - NULL, /* ctloutput */ - pfkey_usrreq, - NULL, /* init */ - NULL, /* fasttimo */ - NULL, /* slowtimo */ - NULL, /* drain */ - NULL /* sysctl */ + SOCK_RAW, + &pfkey_domain, + -1, /* protocol */ + PR_ATOMIC | PR_ADDR, + (void *) raw_input, + (void *) pfkey_output, + (void *) raw_ctlinput, + NULL, /* ctloutput */ + pfkey_usrreq, + NULL, /* init */ + NULL, /* fasttimo */ + NULL, /* slowtimo */ + NULL, /* drain */ + NULL /* sysctl */ }; -static int +int pfkey_buildprotosw(void) { - struct protosw *protosw, *p; - int i, j; - - for (i = j = 0; i <= PFKEY_PROTOCOL_MAX; i++) - if (pfkey_versions[i]) - j++; - - if (j) { - if (!(protosw = malloc(j * sizeof(struct protosw), M_PFKEY, M_DONTWAIT))) - return ENOMEM; - - for (i = 0, p = protosw; i <= PFKEY_PROTOCOL_MAX; i++) - if (pfkey_versions[i]) { - bcopy(&pfkey_protosw_template, p, sizeof(struct protosw)); - p->pr_protocol = pfkey_versions[i]->protocol; - p++; - } - - if (pfkey_domain.dom_protosw) - free(pfkey_domain.dom_protosw, M_PFKEY); - - pfkey_domain.dom_protosw = protosw; - pfkey_domain.dom_protoswNPROTOSW = p; - } else { - if (!(protosw = malloc(sizeof(struct protosw), M_PFKEY, M_DONTWAIT))) - return ENOMEM; - - bcopy(&pfkey_protosw_template, protosw, sizeof(struct protosw)); - - if (pfkey_domain.dom_protosw) - free(pfkey_domain.dom_protosw, M_PFKEY); - - pfkey_domain.dom_protosw = protosw; - pfkey_domain.dom_protoswNPROTOSW = protosw; - } - - return 0; + struct protosw *protosw, *p; + int i, j; + + for (i = j = 0; i <= PFKEY_PROTOCOL_MAX; i++) + if (pfkey_versions[i]) + j++; + + if (j) { + if (!(protosw = malloc(j * sizeof(struct protosw), + M_PFKEY, M_DONTWAIT))) + return (ENOMEM); + + for (i = 0, p = protosw; i <= PFKEY_PROTOCOL_MAX; i++) + if (pfkey_versions[i]) { + bcopy(&pfkey_protosw_template, p, + sizeof(struct protosw)); + p->pr_protocol = pfkey_versions[i]->protocol; + p++; + } + + if (pfkey_domain.dom_protosw) + free(pfkey_domain.dom_protosw, M_PFKEY); + + pfkey_domain.dom_protosw = protosw; + pfkey_domain.dom_protoswNPROTOSW = p; + } else { + if (!(protosw = malloc(sizeof(struct protosw), M_PFKEY, + M_DONTWAIT))) + return (ENOMEM); + + bcopy(&pfkey_protosw_template, protosw, + sizeof(struct protosw)); + + if (pfkey_domain.dom_protosw) + free(pfkey_domain.dom_protosw, M_PFKEY); + + pfkey_domain.dom_protosw = protosw; + pfkey_domain.dom_protoswNPROTOSW = protosw; + } + + return (0); } -void pfkey_init(void) +void +pfkey_init(void) { - if (pfkey_buildprotosw() != 0) - return; + if (pfkey_buildprotosw() != 0) + return; - pfkey_domain.dom_next = domains; - domains = &pfkey_domain; - pfkeyv2_init(); + pfkey_domain.dom_next = domains; + domains = &pfkey_domain; + pfkeyv2_init(); } |