summaryrefslogtreecommitdiff
path: root/lib/libc
diff options
context:
space:
mode:
authoritojun <itojun@NetBSD.org>2003-06-06 06:43:18 +0000
committeritojun <itojun@NetBSD.org>2003-06-06 06:43:18 +0000
commite72a5afeb3d91e4299853897998c818b0cf92eec (patch)
tree356c6b9f5a2071ff8a3a730bc8922e684abde274 /lib/libc
parentdae4d45d3043fa8255f5bae88b92869d7e631218 (diff)
KNF.
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/net/rthdr.c402
1 files changed, 168 insertions, 234 deletions
diff --git a/lib/libc/net/rthdr.c b/lib/libc/net/rthdr.c
index a1b8e2ca64b..7c26fc5789f 100644
--- a/lib/libc/net/rthdr.c
+++ b/lib/libc/net/rthdr.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rthdr.c,v 1.12 2002/06/27 10:22:12 itojun Exp $ */
+/* $NetBSD: rthdr.c,v 1.13 2003/06/06 06:43:18 itojun Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -31,7 +31,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: rthdr.c,v 1.12 2002/06/27 10:22:12 itojun Exp $");
+__RCSID("$NetBSD: rthdr.c,v 1.13 2003/06/06 06:43:18 itojun Exp $");
#endif /* LIBC_SCCS and not lint */
#include "namespace.h"
@@ -58,288 +58,222 @@ __weak_alias(inet6_rthdr_space,_inet6_rthdr_space)
size_t
inet6_rthdr_space(type, seg)
- int type, seg;
+ int type, seg;
{
- switch(type) {
- case IPV6_RTHDR_TYPE_0:
- if (seg < 1 || seg > 23)
- return(0);
- return(CMSG_SPACE(sizeof(struct in6_addr) * (seg - 1)
- + sizeof(struct ip6_rthdr0)));
- default:
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_space: unknown type(%d)\n", type);
-#endif
- return(0);
- }
+ switch (type) {
+ case IPV6_RTHDR_TYPE_0:
+ if (seg < 1 || seg > 23)
+ return (0);
+ return (CMSG_SPACE(sizeof(struct in6_addr) * (seg - 1) +
+ sizeof(struct ip6_rthdr0)));
+ default:
+ return (0);
+ }
}
struct cmsghdr *
inet6_rthdr_init(bp, type)
- void *bp;
- int type;
+ void *bp;
+ int type;
{
- struct cmsghdr *ch;
- struct ip6_rthdr *rthdr;
-
- _DIAGASSERT(bp != NULL);
-
- ch = (struct cmsghdr *)bp;
- rthdr = (struct ip6_rthdr *)(void *)CMSG_DATA(ch);
-
- ch->cmsg_level = IPPROTO_IPV6;
- ch->cmsg_type = IPV6_RTHDR;
-
- switch(type) {
- case IPV6_RTHDR_TYPE_0:
- ch->cmsg_len = CMSG_LEN(sizeof(struct ip6_rthdr0) - sizeof(struct in6_addr));
- (void)memset(rthdr, 0, sizeof(struct ip6_rthdr0));
- rthdr->ip6r_type = IPV6_RTHDR_TYPE_0;
- return(ch);
- default:
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_init: unknown type(%d)\n", type);
-#endif
- return(NULL);
- }
+ struct cmsghdr *ch;
+ struct ip6_rthdr *rthdr;
+
+ _DIAGASSERT(bp != NULL);
+
+ ch = (struct cmsghdr *)bp;
+ rthdr = (struct ip6_rthdr *)(void *)CMSG_DATA(ch);
+
+ ch->cmsg_level = IPPROTO_IPV6;
+ ch->cmsg_type = IPV6_RTHDR;
+
+ switch (type) {
+ case IPV6_RTHDR_TYPE_0:
+ ch->cmsg_len = CMSG_LEN(sizeof(struct ip6_rthdr0) -
+ sizeof(struct in6_addr));
+ (void)memset(rthdr, 0, sizeof(struct ip6_rthdr0));
+ rthdr->ip6r_type = IPV6_RTHDR_TYPE_0;
+ return (ch);
+ default:
+ return (NULL);
+ }
}
int
inet6_rthdr_add(cmsg, addr, flags)
- struct cmsghdr *cmsg;
- const struct in6_addr *addr;
- u_int flags;
+ struct cmsghdr *cmsg;
+ const struct in6_addr *addr;
+ u_int flags;
{
- struct ip6_rthdr *rthdr;
-
- _DIAGASSERT(cmsg != NULL);
- _DIAGASSERT(addr != NULL);
-
- rthdr = (struct ip6_rthdr *)(void *)CMSG_DATA(cmsg);
-
- switch(rthdr->ip6r_type) {
- case IPV6_RTHDR_TYPE_0:
- {
- struct ip6_rthdr0 *rt0 = (struct ip6_rthdr0 *)(void *)rthdr;
- if (flags != IPV6_RTHDR_LOOSE && flags != IPV6_RTHDR_STRICT) {
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_add: unsupported flag(%u)\n", flags);
-#endif
- return(-1);
- }
- if (rt0->ip6r0_segleft == 23) {
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_add: segment overflow\n");
-#endif
- return(-1);
- }
- if (flags == IPV6_RTHDR_STRICT) {
- int c, b;
- c = rt0->ip6r0_segleft / 8;
- b = rt0->ip6r0_segleft % 8;
- rt0->ip6r0_slmap[c] |= (1 << (7 - b));
- }
- rt0->ip6r0_segleft++;
- (void)memcpy(((caddr_t)(void *)rt0) + ((rt0->ip6r0_len + 1) << 3), addr,
- sizeof(struct in6_addr));
- rt0->ip6r0_len += sizeof(struct in6_addr) >> 3;
- cmsg->cmsg_len = CMSG_LEN((rt0->ip6r0_len + 1) << 3);
- break;
- }
- default:
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_add: unknown type(%u)\n",
- rthdr->ip6r_type);
-#endif
- return(-1);
- }
-
- return(0);
+ struct ip6_rthdr *rthdr;
+
+ _DIAGASSERT(cmsg != NULL);
+ _DIAGASSERT(addr != NULL);
+
+ rthdr = (struct ip6_rthdr *)(void *)CMSG_DATA(cmsg);
+
+ switch (rthdr->ip6r_type) {
+ case IPV6_RTHDR_TYPE_0:
+ {
+ struct ip6_rthdr0 *rt0 = (struct ip6_rthdr0 *)(void *)rthdr;
+ if (flags != IPV6_RTHDR_LOOSE && flags != IPV6_RTHDR_STRICT)
+ return (-1);
+ if (rt0->ip6r0_segleft == 23)
+ return (-1);
+ if (flags == IPV6_RTHDR_STRICT) {
+ int c, b;
+ c = rt0->ip6r0_segleft / 8;
+ b = rt0->ip6r0_segleft % 8;
+ rt0->ip6r0_slmap[c] |= (1 << (7 - b));
+ }
+ rt0->ip6r0_segleft++;
+ (void)memcpy(((caddr_t)(void *)rt0) +
+ ((rt0->ip6r0_len + 1) << 3), addr, sizeof(struct in6_addr));
+ rt0->ip6r0_len += sizeof(struct in6_addr) >> 3;
+ cmsg->cmsg_len = CMSG_LEN((rt0->ip6r0_len + 1) << 3);
+ break;
+ }
+ default:
+ return (-1);
+ }
+
+ return (0);
}
int
inet6_rthdr_lasthop(cmsg, flags)
- struct cmsghdr *cmsg;
- unsigned int flags;
+ struct cmsghdr *cmsg;
+ unsigned int flags;
{
- struct ip6_rthdr *rthdr;
-
- _DIAGASSERT(cmsg != NULL);
-
- rthdr = (struct ip6_rthdr *)(void *)CMSG_DATA(cmsg);
-
- switch(rthdr->ip6r_type) {
- case IPV6_RTHDR_TYPE_0:
- {
- struct ip6_rthdr0 *rt0 = (struct ip6_rthdr0 *)(void *)rthdr;
- if (flags != IPV6_RTHDR_LOOSE && flags != IPV6_RTHDR_STRICT) {
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_lasthop: unsupported flag(%u)\n", flags);
-#endif
- return(-1);
- }
- if (rt0->ip6r0_segleft > 23) {
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_add: segment overflow\n");
-#endif
- return(-1);
- }
- if (flags == IPV6_RTHDR_STRICT) {
- int c, b;
- c = rt0->ip6r0_segleft / 8;
- b = rt0->ip6r0_segleft % 8;
- rt0->ip6r0_slmap[c] |= (1 << (7 - b));
- }
- break;
- }
- default:
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_lasthop: unknown type(%u)\n",
- rthdr->ip6r_type);
-#endif
- return(-1);
- }
-
- return(0);
+ struct ip6_rthdr *rthdr;
+
+ _DIAGASSERT(cmsg != NULL);
+
+ rthdr = (struct ip6_rthdr *)(void *)CMSG_DATA(cmsg);
+
+ switch (rthdr->ip6r_type) {
+ case IPV6_RTHDR_TYPE_0:
+ {
+ struct ip6_rthdr0 *rt0 = (struct ip6_rthdr0 *)(void *)rthdr;
+ if (flags != IPV6_RTHDR_LOOSE && flags != IPV6_RTHDR_STRICT)
+ return (-1);
+ if (rt0->ip6r0_segleft > 23)
+ return (-1);
+ if (flags == IPV6_RTHDR_STRICT) {
+ int c, b;
+ c = rt0->ip6r0_segleft / 8;
+ b = rt0->ip6r0_segleft % 8;
+ rt0->ip6r0_slmap[c] |= (1 << (7 - b));
+ }
+ break;
+ }
+ default:
+ return (-1);
+ }
+
+ return (0);
}
#if 0
int
inet6_rthdr_reverse(in, out)
- const struct cmsghdr *in;
- struct cmsghdr *out;
+ const struct cmsghdr *in;
+ struct cmsghdr *out;
{
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_reverse: not implemented yet\n");
-#endif
- return -1;
+
+ return (-1);
}
#endif
int
inet6_rthdr_segments(cmsg)
- const struct cmsghdr *cmsg;
+ const struct cmsghdr *cmsg;
{
- const struct ip6_rthdr *rthdr;
+ const struct ip6_rthdr *rthdr;
- _DIAGASSERT(cmsg != NULL);
+ _DIAGASSERT(cmsg != NULL);
- /*LINTED const castaway*/
- rthdr = (const struct ip6_rthdr *)(const void *)CMSG_DATA(cmsg);
+ /*LINTED const castaway*/
+ rthdr = (const struct ip6_rthdr *)(const void *)CMSG_DATA(cmsg);
- switch(rthdr->ip6r_type) {
- case IPV6_RTHDR_TYPE_0:
- {
- const struct ip6_rthdr0 *rt0 =
- (const struct ip6_rthdr0 *)(const void *)rthdr;
+ switch (rthdr->ip6r_type) {
+ case IPV6_RTHDR_TYPE_0:
+ {
+ const struct ip6_rthdr0 *rt0 =
+ (const struct ip6_rthdr0 *)(const void *)rthdr;
- if (rt0->ip6r0_len % 2 || 46 < rt0->ip6r0_len) {
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_segments: invalid size(%u)\n",
- rt0->ip6r0_len);
-#endif
- return -1;
- }
+ if (rt0->ip6r0_len % 2 || 46 < rt0->ip6r0_len)
+ return (-1);
- return (rt0->ip6r0_len * 8) / sizeof(struct in6_addr);
- }
+ return (rt0->ip6r0_len * 8) / sizeof(struct in6_addr);
+ }
- default:
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_segments: unknown type(%u)\n",
- rthdr->ip6r_type);
-#endif
- return -1;
- }
+ default:
+ return (-1);
+ }
}
struct in6_addr *
inet6_rthdr_getaddr(cmsg, idx)
- struct cmsghdr *cmsg;
- int idx;
+ struct cmsghdr *cmsg;
+ int idx;
{
- struct ip6_rthdr *rthdr;
+ struct ip6_rthdr *rthdr;
- _DIAGASSERT(cmsg != NULL);
+ _DIAGASSERT(cmsg != NULL);
- rthdr = (struct ip6_rthdr *)(void *)CMSG_DATA(cmsg);
+ rthdr = (struct ip6_rthdr *)(void *)CMSG_DATA(cmsg);
- switch(rthdr->ip6r_type) {
- case IPV6_RTHDR_TYPE_0:
- {
- struct ip6_rthdr0 *rt0 = (struct ip6_rthdr0 *)(void *)rthdr;
- int naddr;
+ switch (rthdr->ip6r_type) {
+ case IPV6_RTHDR_TYPE_0:
+ {
+ struct ip6_rthdr0 *rt0 = (struct ip6_rthdr0 *)(void *)rthdr;
+ int naddr;
- if (rt0->ip6r0_len % 2 || 46 < rt0->ip6r0_len) {
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_getaddr: invalid size(%u)\n",
- rt0->ip6r0_len);
-#endif
- return NULL;
+ if (rt0->ip6r0_len % 2 || 46 < rt0->ip6r0_len)
+ return NULL;
+ naddr = (rt0->ip6r0_len * 8) / sizeof(struct in6_addr);
+ if (idx <= 0 || naddr < idx)
+ return NULL;
+ return &rt0->ip6r0_addr[idx - 1];
}
- naddr = (rt0->ip6r0_len * 8) / sizeof(struct in6_addr);
- if (idx <= 0 || naddr < idx) {
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_getaddr: invalid index(%d)\n", idx);
-#endif
- return NULL;
+
+ default:
+ return NULL;
}
- return &rt0->ip6r0_addr[idx - 1];
- }
-
- default:
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_getaddr: unknown type(%u)\n",
- rthdr->ip6r_type);
-#endif
- return NULL;
- }
}
int
inet6_rthdr_getflags(cmsg, idx)
- const struct cmsghdr *cmsg;
- int idx;
+ const struct cmsghdr *cmsg;
+ int idx;
{
- const struct ip6_rthdr *rthdr;
-
- _DIAGASSERT(cmsg != NULL);
-
- /*LINTED const castaway*/
- rthdr = (const struct ip6_rthdr *)(const void *)CMSG_DATA(cmsg);
-
- switch(rthdr->ip6r_type) {
- case IPV6_RTHDR_TYPE_0:
- {
- const struct ip6_rthdr0 *rt0 = (const struct ip6_rthdr0 *)
- (const void *)rthdr;
- int naddr;
-
- if (rt0->ip6r0_len % 2 || 46 < rt0->ip6r0_len) {
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_getflags: invalid size(%u)\n",
- rt0->ip6r0_len);
-#endif
- return -1;
+ const struct ip6_rthdr *rthdr;
+
+ _DIAGASSERT(cmsg != NULL);
+
+ /*LINTED const castaway*/
+ rthdr = (const struct ip6_rthdr *)(const void *)CMSG_DATA(cmsg);
+
+ switch (rthdr->ip6r_type) {
+ case IPV6_RTHDR_TYPE_0:
+ {
+ const struct ip6_rthdr0 *rt0 = (const struct ip6_rthdr0 *)
+ (const void *)rthdr;
+ int naddr;
+
+ if (rt0->ip6r0_len % 2 || 46 < rt0->ip6r0_len)
+ return (-1);
+ naddr = (rt0->ip6r0_len * 8) / sizeof(struct in6_addr);
+ if (idx < 0 || naddr < idx)
+ return (-1);
+ if (rt0->ip6r0_slmap[idx / 8] & (0x80 >> (idx % 8)))
+ return IPV6_RTHDR_STRICT;
+ else
+ return IPV6_RTHDR_LOOSE;
}
- naddr = (rt0->ip6r0_len * 8) / sizeof(struct in6_addr);
- if (idx < 0 || naddr < idx) {
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_getflags: invalid index(%d)\n", idx);
-#endif
- return -1;
+
+ default:
+ return (-1);
}
- if (rt0->ip6r0_slmap[idx / 8] & (0x80 >> (idx % 8)))
- return IPV6_RTHDR_STRICT;
- else
- return IPV6_RTHDR_LOOSE;
- }
-
- default:
-#ifdef DEBUG
- fprintf(stderr, "inet6_rthdr_getflags: unknown type(%u)\n",
- rthdr->ip6r_type);
-#endif
- return -1;
- }
}