[uClibc] [PATCH] correct some inet data types
Atsushi Nemoto
anemo at mba.ocn.ne.jp
Fri Sep 26 14:42:07 UTC 2003
I found inappropriate data types are used in some places in networking
codes.
* tcp_seq is 32bit (u_long -> u_int32_t)
* in_addt_t should be used for internet address (unsigned long -> in_addr_t)
* socklen_t should be used for accept()
This is a patch against uclibc-0.9.21 (can be applied for current
CVS). 64bit platforms (sizeof(int)!=sizeof(long)) will need this. I
believe this patch does not harm any 32bit platforms.
diff -ur uClibc-0.9.21.org/include/netinet/ip_tcp.h uClibc-0.9.21/include/netinet/ip_tcp.h
--- uClibc-0.9.21.org/include/netinet/ip_tcp.h Sun Jul 9 11:16:27 2000
+++ uClibc-0.9.21/include/netinet/ip_tcp.h Mon Sep 15 20:52:21 2003
@@ -24,7 +24,7 @@
#include <linux/socket.h>
#include <sys/types.h>
-typedef u_long tcp_seq;
+typedef u_int32_t tcp_seq;
/*
* TCP header.
* Per RFC 793, September, 1981.
diff -ur uClibc-0.9.21.org/libc/inet/addr.c uClibc-0.9.21/libc/inet/addr.c
--- uClibc-0.9.21.org/libc/inet/addr.c Tue Aug 5 04:03:33 2003
+++ uClibc-0.9.21/libc/inet/addr.c Mon Sep 15 21:40:53 2003
@@ -31,7 +31,7 @@
const char *cp;
struct in_addr *addrptr;
{
- unsigned long addr;
+ in_addr_t addr;
int value;
int part;
@@ -78,12 +78,12 @@
#endif
#ifdef L_inet_addr
-unsigned long inet_addr(const char *cp)
+in_addr_t inet_addr(const char *cp)
{
struct in_addr a;
if (!inet_aton(cp, &a))
- return -1;
+ return INADDR_NONE;
else
return a.s_addr;
}
@@ -95,7 +95,7 @@
char *inet_ntoa_r(struct in_addr in, char buf[INET_NTOA_MAX_LEN])
{
- unsigned long addr = ntohl(in.s_addr);
+ in_addr_t addr = ntohl(in.s_addr);
int i;
char *p, *q;
@@ -125,15 +125,15 @@
* Formulate an Internet address from network + host. Used in
* building addresses stored in the ifnet structure.
*/
-struct in_addr inet_makeaddr(unsigned long net, unsigned long host)
+struct in_addr inet_makeaddr(in_addr_t net, in_addr_t host)
{
- unsigned long addr;
+ in_addr_t addr;
if (net < 128)
addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
else if (net < 65536)
addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
- else if (net < 16777216L)
+ else if (net < 16777216UL)
addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
else
addr = net | host;
@@ -149,9 +149,9 @@
* internet address; handles class a/b/c network
* number formats.
*/
-unsigned long inet_lnaof(struct in_addr in)
+in_addr_t inet_lnaof(struct in_addr in)
{
- unsigned long i = ntohl(in.s_addr);
+ in_addr_t i = ntohl(in.s_addr);
if (IN_CLASSA(i))
return ((i)&IN_CLASSA_HOST);
@@ -168,10 +168,10 @@
* Return the network number from an internet
* address; handles class a/b/c network #'s.
*/
-u_int32_t
+in_addr_t
inet_netof(struct in_addr in)
{
- u_int32_t i = ntohl(in.s_addr);
+ in_addr_t i = ntohl(in.s_addr);
if (IN_CLASSA(i))
return (((i)&IN_CLASSA_NET) >> IN_CLASSA_NSHIFT);
diff -ur uClibc-0.9.21.org/libc/inet/inet_net.c uClibc-0.9.21/libc/inet/inet_net.c
--- uClibc-0.9.21.org/libc/inet/inet_net.c Wed Nov 21 23:56:41 2001
+++ uClibc-0.9.21/libc/inet/inet_net.c Mon Sep 15 21:45:59 2003
@@ -42,12 +42,12 @@
* The library routines call this routine to interpret
* network numbers.
*/
-u_int32_t
+in_addr_t
inet_network(const char *cp)
{
- register u_long val, base, n;
+ register in_addr_t val, base, n;
register char c;
- u_long parts[4], *pp = parts;
+ in_addr_t parts[4], *pp = parts;
register int i;
again:
diff -urN uClibc-0.9.21.org/libc/inet/rpc/rcmd.c uClibc-0.9.21/libc/inet/rpc/rcmd.c
--- uClibc-0.9.21.org/libc/inet/rpc/rcmd.c Sat Aug 2 05:08:43 2003
+++ uClibc-0.9.21/libc/inet/rpc/rcmd.c Wed Sep 10 14:39:58 2003
@@ -192,7 +192,7 @@
} else {
char num[8];
int s2 = rresvport(&lport), s3;
- size_t len = sizeof(from);
+ socklen_t len = sizeof(from);
if (s2 < 0)
goto bad;
@@ -541,7 +541,7 @@
}
/* Try for raw ip address first. */
- if (isdigit (*lhost) && (long) (laddr = inet_addr (lhost)) != -1)
+ if (isdigit (*lhost) && (laddr = inet_addr (lhost)) != INADDR_NONE)
return negate * (! (raddr ^ laddr));
/* Better be a hostname. */
diff -ur uClibc-0.9.21.org/libc/inet/rpc/rexec.c uClibc-0.9.21/libc/inet/rpc/rexec.c
--- uClibc-0.9.21.org/libc/inet/rpc/rexec.c Tue Aug 6 23:46:14 2002
+++ uClibc-0.9.21/libc/inet/rpc/rexec.c Mon Sep 15 22:03:40 2003
@@ -135,7 +135,7 @@
port = atoi(servbuff);
(void) sprintf(num, "%u", port);
(void) write(s, num, strlen(num)+1);
- { int len = sizeof (from);
+ { socklen_t len = sizeof (from);
s3 = accept(s2, (struct sockaddr *)&from, &len);
close(s2);
if (s3 < 0) {
---
Atsushi Nemoto
More information about the uClibc
mailing list