From 15ab0bcf01ef7bd7323d9b2da55906bafbb40fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sun, 21 Oct 2007 20:10:43 +0000 Subject: [PATCH] * int32_t, uint32_t are now of type "int", and no longer of type "long". This should help to reduce the number of warnings imported code will throw during compilation (helps a lot with tcpdump, for example). * Since long is 64 bit on 64 bit platforms, we might want to think about doing that change for the Haiku types int32 and uint32 as well. * Fixed several occurences of hidden type problems. * Fixed build of the stack and TCP under BeOS. * Fixed incorrect typedef in socket_interface.h. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22643 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/os/drivers/socket_interface.h | 2 +- headers/posix/netinet/in.h | 3 +- headers/posix/stdint.h | 11 ++-- headers/posix/sys/socket.h | 11 ++-- headers/private/net/ProtocolUtilities.h | 5 +- headers/private/net/net_socket.h | 35 +++++----- headers/private/net/net_stack.h | 27 ++++---- .../network/protocols/tcp/EndpointManager.cpp | 10 +-- .../network/protocols/tcp/TCPEndpoint.cpp | 10 ++- .../kernel/network/protocols/tcp/tcp.cpp | 65 ++++++++++--------- .../kernel/network/protocols/tcp/tcp.h | 16 +++-- src/add-ons/kernel/network/socket/socket.cpp | 4 +- .../kernel/network/stack/net_socket.cpp | 1 + src/add-ons/kernel/network/stack/utility.cpp | 8 +++ src/kits/network/dns/dst/dst_api.c | 2 +- src/kits/network/dns/dst/support.c | 2 +- src/kits/network/dns/inet/inet_addr.c | 2 +- src/kits/network/dns/inet/inet_ntop.c | 12 ++-- src/kits/network/dns/irs/getnameinfo.c | 6 +- src/kits/network/dns/resolv/res_debug.c | 4 +- src/kits/network/socket.cpp | 5 +- src/servers/net/DHCPClient.cpp | 45 +++++++++---- 22 files changed, 169 insertions(+), 117 deletions(-) diff --git a/headers/os/drivers/socket_interface.h b/headers/os/drivers/socket_interface.h index 2290293695..4132dfa7e2 100644 --- a/headers/os/drivers/socket_interface.h +++ b/headers/os/drivers/socket_interface.h @@ -14,7 +14,7 @@ #define B_SOCKET_MODULE_NAME "network/socket/v1" -typedef struct socket_module_info { +struct socket_module_info { struct module_info info; int (*accept)(int socket, struct sockaddr *address, socklen_t *_addressLength); diff --git a/headers/posix/netinet/in.h b/headers/posix/netinet/in.h index a20b5300b8..da580fdfb5 100644 --- a/headers/posix/netinet/in.h +++ b/headers/posix/netinet/in.h @@ -22,7 +22,8 @@ typedef uint32_t in_addr_t; * and we are not allowed to import all the BeOS types here. */ #ifndef htonl - extern uint32_t __swap_int32(uint32_t); /* private */ +// extern uint32_t __swap_int32(uint32_t); /* private */ + extern unsigned long __swap_int32(unsigned long); /* private */ extern uint16_t __swap_int16(uint16_t); /* private */ #if BYTE_ORDER == LITTLE_ENDIAN #define htonl(x) __swap_int32(x) diff --git a/headers/posix/stdint.h b/headers/posix/stdint.h index 17cfb913d9..d0aee5fb3c 100644 --- a/headers/posix/stdint.h +++ b/headers/posix/stdint.h @@ -1,6 +1,7 @@ -/* -** Distributed under the terms of the Haiku License. -*/ +/* + * Copyright 2003-2007, Haiku Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ #ifndef _STDINT_H_ #define _STDINT_H_ @@ -27,8 +28,8 @@ typedef unsigned short uint16_t; #define INT32_MIN (-INT32_MAX-1) #define UINT32_MAX (4294967295UL) -typedef signed long int32_t; -typedef unsigned long uint32_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; #define INT64_MAX (9223372036854775807LL) #define INT64_MIN (-INT64_MAX-1) diff --git a/headers/posix/sys/socket.h b/headers/posix/sys/socket.h index b8142a0147..9b2f9f1aaa 100644 --- a/headers/posix/sys/socket.h +++ b/headers/posix/sys/socket.h @@ -83,13 +83,12 @@ struct sockaddr { uint8_t sa_data[30]; }; -/* this can hold ANY sockaddr we care to throw at it! */ struct sockaddr_storage { - uint8_t ss_len; /* total length */ - uint8_t ss_family; /* address family */ - uint8_t __ss_pad1[6]; /* align to quad */ - uint64_t __ss_pad2; /* force alignment for stupid compilers */ - uint8_t __ss_pad3[112]; /* pad to a total of 128 bytes */ + uint8_t ss_len; /* total length */ + uint8_t ss_family; /* address family */ + uint8_t __ss_pad1[6]; /* align to quad */ + uint64_t __ss_pad2; /* force alignment to 64 bit */ + uint8_t __ss_pad3[112]; /* pad to a total of 128 bytes */ }; struct msghdr { diff --git a/headers/private/net/ProtocolUtilities.h b/headers/private/net/ProtocolUtilities.h index 050be7e1b6..255261d60e 100644 --- a/headers/private/net/ProtocolUtilities.h +++ b/headers/private/net/ProtocolUtilities.h @@ -5,20 +5,21 @@ * Authors: * Hugo Santos, hugosantos@gmail.com */ - #ifndef PROTOCOL_UTILITIES_H #define PROTOCOL_UTILITIES_H + #include +#include #include #include +#include #include #include #include #include -#include class BenaphoreLocking { public: diff --git a/headers/private/net/net_socket.h b/headers/private/net/net_socket.h index 1f38c12369..91d9203509 100644 --- a/headers/private/net/net_socket.h +++ b/headers/private/net/net_socket.h @@ -1,5 +1,5 @@ /* - * Copyright 2006, Haiku, Inc. All Rights Reserved. + * Copyright 2006-2007, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. */ #ifndef NET_SOCKET_H @@ -9,9 +9,10 @@ #include #include -#include #include +struct selectsync; + #define NET_SOCKET_MODULE_NAME "network/stack/socket/v1" @@ -42,32 +43,36 @@ typedef struct net_socket { struct net_socket_module_info { struct module_info info; - status_t (*open_socket)(int family, int type, int protocol, net_socket **_socket); + status_t (*open_socket)(int family, int type, int protocol, + net_socket **_socket); status_t (*close)(net_socket *socket); status_t (*free)(net_socket *socket); - status_t (*readv)(net_socket *socket, const iovec *vecs, size_t vecCount, - size_t *_length); - status_t (*writev)(net_socket *socket, const iovec *vecs, size_t vecCount, - size_t *_length); - status_t (*control)(net_socket *socket, int32 op, void *data, size_t length); + status_t (*readv)(net_socket *socket, const iovec *vecs, + size_t vecCount, size_t *_length); + status_t (*writev)(net_socket *socket, const iovec *vecs, + size_t vecCount, size_t *_length); + status_t (*control)(net_socket *socket, int32 op, void *data, + size_t length); ssize_t (*read_avail)(net_socket *socket); ssize_t (*send_avail)(net_socket *socket); status_t (*send_data)(net_socket *socket, net_buffer *buffer); - status_t (*receive_data)(net_socket *socket, size_t length, uint32 flags, - net_buffer **_buffer); + status_t (*receive_data)(net_socket *socket, size_t length, + uint32 flags, net_buffer **_buffer); status_t (*get_option)(net_socket *socket, int level, int option, void *value, int *_length); status_t (*set_option)(net_socket *socket, int level, int option, const void *value, int length); - status_t (*get_next_stat)(uint32 *cookie, int family, struct net_stat *stat); + status_t (*get_next_stat)(uint32 *cookie, int family, + struct net_stat *stat); // connections - status_t (*spawn_pending_socket)(net_socket *parent, net_socket **_socket); + status_t (*spawn_pending_socket)(net_socket *parent, + net_socket **_socket); void (*delete_socket)(net_socket *socket); status_t (*dequeue_connected)(net_socket *parent, net_socket **_socket); ssize_t (*count_connected)(net_socket *parent); @@ -75,10 +80,10 @@ struct net_socket_module_info { status_t (*set_connected)(net_socket *socket); // notifications - status_t (*request_notification)(net_socket *socket, uint8 event, uint32 ref, - selectsync *sync); + status_t (*request_notification)(net_socket *socket, uint8 event, + uint32 ref, struct selectsync *sync); status_t (*cancel_notification)(net_socket *socket, uint8 event, - selectsync *sync); + struct selectsync *sync); status_t (*notify)(net_socket *socket, uint8 event, int32 value); // standard socket API diff --git a/headers/private/net/net_stack.h b/headers/private/net/net_stack.h index 5a7cea8e86..1a249d26bb 100644 --- a/headers/private/net/net_stack.h +++ b/headers/private/net/net_stack.h @@ -78,9 +78,10 @@ struct net_stack_module_info { status_t (*register_domain_receiving_protocol)(int family, int type, const char *moduleName); - status_t (*get_domain_receiving_protocol)(struct net_domain *domain, uint32 type, - struct net_protocol_module_info **_module); - status_t (*put_domain_receiving_protocol)(struct net_domain *domain, uint32 type); + status_t (*get_domain_receiving_protocol)(struct net_domain *domain, + uint32 type, struct net_protocol_module_info **_module); + status_t (*put_domain_receiving_protocol)(struct net_domain *domain, + uint32 type); // devices status_t (*register_device_deframer)(struct net_device *device, @@ -94,33 +95,37 @@ struct net_stack_module_info { status_t (*unregister_device_handler)(struct net_device *device, int32 type); status_t (*register_device_monitor)(struct net_device *device, - struct net_device_monitor *monitor); + struct net_device_monitor *monitor); status_t (*unregister_device_monitor)(struct net_device *device, - struct net_device_monitor *monitor); + struct net_device_monitor *monitor); status_t (*device_link_changed)(struct net_device *device); status_t (*device_removed)(struct net_device *device); status_t (*device_enqueue_buffer)(struct net_device *device, - struct net_buffer *buffer); + struct net_buffer *buffer); // Utility Functions // notification - status_t (*notify_socket)(struct net_socket *socket, uint8 event, int32 value); + status_t (*notify_socket)(struct net_socket *socket, uint8 event, + int32 value); // checksum uint16 (*checksum)(uint8 *buffer, size_t length); // fifo - status_t (*init_fifo)(struct net_fifo *fifo, const char *name, size_t maxBytes); + status_t (*init_fifo)(struct net_fifo *fifo, const char *name, + size_t maxBytes); void (*uninit_fifo)(struct net_fifo *fifo); - status_t (*fifo_enqueue_buffer)(struct net_fifo *fifo, struct net_buffer *buffer); + status_t (*fifo_enqueue_buffer)(struct net_fifo *fifo, + struct net_buffer *buffer); ssize_t (*fifo_dequeue_buffer)(struct net_fifo *fifo, uint32 flags, bigtime_t timeout, struct net_buffer **_buffer); status_t (*clear_fifo)(struct net_fifo *fifo); - status_t (*fifo_socket_enqueue_buffer)(struct net_fifo *, struct net_socket *, - uint8 event, struct net_buffer *); + status_t (*fifo_socket_enqueue_buffer)(struct net_fifo *fifo, + struct net_socket *socket, uint8 event, + struct net_buffer *buffer); // timer void (*init_timer)(struct net_timer *timer, net_timer_func hook, void *data); diff --git a/src/add-ons/kernel/network/protocols/tcp/EndpointManager.cpp b/src/add-ons/kernel/network/protocols/tcp/EndpointManager.cpp index f91eab620c..c6f4154f2f 100644 --- a/src/add-ons/kernel/network/protocols/tcp/EndpointManager.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/EndpointManager.cpp @@ -9,14 +9,16 @@ #include "EndpointManager.h" -#include "TCPEndpoint.h" -#include - -#include +#include #include +#include +#include + +#include "TCPEndpoint.h" + //#define TRACE_ENDPOINT_MANAGER #ifdef TRACE_ENDPOINT_MANAGER diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp index 3ec3eee3ed..92ceeda70c 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp @@ -24,6 +24,7 @@ #include #include +#include #include #include @@ -196,9 +197,10 @@ WaitList::Wait(MutexLocker &locker, bigtime_t timeout, bool wakeNext) status_t status = B_OK; - while (status == B_OK && !atomic_test_and_set(&fCondition, 0, 1)) + while (status == B_OK && !atomic_test_and_set(&fCondition, 0, 1)) { status = acquire_sem_etc(fSem, 1, B_ABSOLUTE_TIMEOUT | B_CAN_INTERRUPT, timeout); + } locker.Lock(); if (status == B_OK && wakeNext) @@ -212,7 +214,13 @@ void WaitList::Signal() { atomic_or(&fCondition, 1); +#ifdef __HAIKU__ release_sem_etc(fSem, 1, B_DO_NOT_RESCHEDULE | B_RELEASE_IF_WAITING_ONLY); +#else + int32 count; + if (get_sem_count(fSem, &count) == B_OK && count < 0) + release_sem_etc(fSem, 1, B_DO_NOT_RESCHEDULE); +#endif } diff --git a/src/add-ons/kernel/network/protocols/tcp/tcp.cpp b/src/add-ons/kernel/network/protocols/tcp/tcp.cpp index fd88a72d4a..7623c2f954 100644 --- a/src/add-ons/kernel/network/protocols/tcp/tcp.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/tcp.cpp @@ -1,10 +1,11 @@ /* - * Copyright 2006, Haiku, Inc. All Rights Reserved. + * Copyright 2006-2007, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: * Axel Dörfler, axeld@pinc-software.de * Andrew Galante, haiku.galante@gmail.com + * Hugo Santos, hugosantos@gmail.com */ @@ -134,9 +135,9 @@ add_options(tcp_segment_header &segment, uint8 *buffer, size_t bufferSize) bump_option(option, length); option->kind = TCP_OPTION_TIMESTAMP; option->length = 10; - option->timestamp.timestamp_value = htonl(segment.timestamp_value); + option->timestamp.value = htonl(segment.timestamp_value); // TSecr is opaque to us, we send it as we received it. - option->timestamp.timestamp_reply = segment.timestamp_reply; + option->timestamp.reply = segment.timestamp_reply; bump_option(option, length); } @@ -307,9 +308,9 @@ process_options(tcp_segment_header &segment, net_buffer *buffer, size_t size) case TCP_OPTION_TIMESTAMP: if (option->length == 10 && (size - 10) >= 0) { segment.options |= TCP_HAS_TIMESTAMPS; - segment.timestamp_value = option->timestamp.timestamp_value; + segment.timestamp_value = option->timestamp.value; segment.timestamp_reply = - ntohl(option->timestamp.timestamp_reply); + ntohl(option->timestamp.reply); } break; case TCP_OPTION_SACK_PERMITTED: @@ -386,6 +387,33 @@ dump_tcp_header(tcp_header &header) #endif +static int +dump_endpoints(int argc, char *argv[]) +{ + EndpointManagerList::Iterator it = sEndpointManagers.GetIterator(); + + while (it.HasNext()) + it.Next()->DumpEndpoints(); + + return 0; +} + + +static int +dump_endpoint(int argc, char *argv[]) +{ + if (argc < 2) { + kprintf("usage: tcp_endpoint [address]\n"); + return 0; + } + + TCPEndpoint *endpoint = (TCPEndpoint *)strtoul(argv[1], NULL, 16); + endpoint->DumpInternalState(); + + return 0; +} + + // #pragma mark - protocol API @@ -674,33 +702,6 @@ tcp_error_reply(net_protocol *protocol, net_buffer *causedError, uint32 code, } -static int -dump_endpoints(int argc, char *argv[]) -{ - EndpointManagerList::Iterator it = sEndpointManagers.GetIterator(); - - while (it.HasNext()) - it.Next()->DumpEndpoints(); - - return 0; -} - - -static int -dump_endpoint(int argc, char *argv[]) -{ - if (argc < 2) { - kprintf("usage: tcp_endpoint [address]\n"); - return 0; - } - - TCPEndpoint *endpoint = (TCPEndpoint *)strtoul(argv[1], NULL, 16); - endpoint->DumpInternalState(); - - return 0; -} - - // #pragma mark - diff --git a/src/add-ons/kernel/network/protocols/tcp/tcp.h b/src/add-ons/kernel/network/protocols/tcp/tcp.h index 6ba556d4f3..d320c2a04e 100644 --- a/src/add-ons/kernel/network/protocols/tcp/tcp.h +++ b/src/add-ons/kernel/network/protocols/tcp/tcp.h @@ -1,9 +1,11 @@ /* - * Copyright 2006, Haiku, Inc. All Rights Reserved. + * Copyright 2006-2007, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: + * Axel Dörfler, axeld@pinc-software.de * Andrew Galante, haiku.galante@gmail.com + * Hugo Santos, hugosantos@gmail.com */ #ifndef TCP_H #define TCP_H @@ -115,13 +117,13 @@ struct tcp_option { uint8 kind; uint8 length; union { - uint8 window_shift; - uint16 max_segment_size; + uint8 window_shift; + uint16 max_segment_size; struct { - uint32 timestamp_value; - uint32 timestamp_reply; - } timestamp; - tcp_sack sack[0]; + uint32 value; + uint32 reply; + } timestamp; + tcp_sack sack[0]; }; } _PACKED; diff --git a/src/add-ons/kernel/network/socket/socket.cpp b/src/add-ons/kernel/network/socket/socket.cpp index 251056f04b..d2d7e770eb 100644 --- a/src/add-ons/kernel/network/socket/socket.cpp +++ b/src/add-ons/kernel/network/socket/socket.cpp @@ -221,7 +221,7 @@ sendmsg(int socket, const struct msghdr *message, int flags) int -getsockopt(int socket, int level, int option, void *value, size_t *_length) +getsockopt(int socket, int level, int option, void *value, socklen_t *_length) { sockopt_args args; args.level = level; @@ -240,7 +240,7 @@ getsockopt(int socket, int level, int option, void *value, size_t *_length) int -setsockopt(int socket, int level, int option, const void *value, size_t length) +setsockopt(int socket, int level, int option, const void *value, socklen_t length) { sockopt_args args; args.level = level; diff --git a/src/add-ons/kernel/network/stack/net_socket.cpp b/src/add-ons/kernel/network/stack/net_socket.cpp index c9292196d1..98b71e8136 100644 --- a/src/add-ons/kernel/network/stack/net_socket.cpp +++ b/src/add-ons/kernel/network/stack/net_socket.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include #include diff --git a/src/add-ons/kernel/network/stack/utility.cpp b/src/add-ons/kernel/network/stack/utility.cpp index a357cc41bd..925f6dfaa1 100644 --- a/src/add-ons/kernel/network/stack/utility.cpp +++ b/src/add-ons/kernel/network/stack/utility.cpp @@ -91,9 +91,13 @@ UserBuffer::Copy(void *source, size_t length) return NULL; } +#ifdef _KERNEL_MODE fStatus = user_memcpy(fBuffer, source, length); if (fStatus < B_OK) return NULL; +#else + memcpy(fBuffer, source, length); +#endif void *current = fBuffer; @@ -242,7 +246,11 @@ Fifo::Clear() void Fifo::WakeAll() { +#ifdef __HAIKU__ release_sem_etc(notify, 0, B_RELEASE_ALL); +#else + release_sem_etc(notify, 0, waiting); +#endif } diff --git a/src/kits/network/dns/dst/dst_api.c b/src/kits/network/dns/dst/dst_api.c index 5ea27cbad7..6eb447202a 100644 --- a/src/kits/network/dns/dst/dst_api.c +++ b/src/kits/network/dns/dst/dst_api.c @@ -611,7 +611,7 @@ dst_s_write_public_key(const DST_KEY *key) b64_ntop(&out_key[6], len - 6, enc_key, sizeof(enc_key)); else b64_ntop(&out_key[4], len - 4, enc_key, sizeof(enc_key)); - fprintf(fp, "%s IN KEY %ld %d %d %s\n", + fprintf(fp, "%s IN KEY %d %d %d %s\n", key->dk_key_name, key->dk_flags, key->dk_proto, key->dk_alg, enc_key); fclose(fp); diff --git a/src/kits/network/dns/dst/support.c b/src/kits/network/dns/dst/support.c index 7a1f6aef7b..ab96941577 100644 --- a/src/kits/network/dns/dst/support.c +++ b/src/kits/network/dns/dst/support.c @@ -280,7 +280,7 @@ dst_s_build_filename(char *filename, const char *name, u_int16_t id, if (filename_length < 1 + strlen(name) + 4 + 6 + 1 + strlen(suffix)) return (-1); my_id = id; - sprintf(filename, "K%s+%03d+%05ld.%s", name, alg, my_id, + sprintf(filename, "K%s+%03d+%05d.%s", name, alg, my_id, (const char *) suffix); if (strrchr(filename, '/')) return (-1); diff --git a/src/kits/network/dns/inet/inet_addr.c b/src/kits/network/dns/inet/inet_addr.c index e89d0344fc..4fc17cbe8f 100644 --- a/src/kits/network/dns/inet/inet_addr.c +++ b/src/kits/network/dns/inet/inet_addr.c @@ -89,7 +89,7 @@ static const char rcsid[] = "$Id$"; * Ascii internet address interpretation routine. * The value returned is in network order. */ -u_long +in_addr_t inet_addr(const char *cp) { struct in_addr val; diff --git a/src/kits/network/dns/inet/inet_ntop.c b/src/kits/network/dns/inet/inet_ntop.c index 2218e0a6e2..c74b1a494c 100644 --- a/src/kits/network/dns/inet/inet_ntop.c +++ b/src/kits/network/dns/inet/inet_ntop.c @@ -46,8 +46,8 @@ static const char rcsid[] = "$Id$"; * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX. */ -static const char *inet_ntop4 __P((const u_char *src, char *dst, size_t size)); -static const char *inet_ntop6 __P((const u_char *src, char *dst, size_t size)); +static const char *inet_ntop4 __P((const u_char *src, char *dst, socklen_t size)); +static const char *inet_ntop6 __P((const u_char *src, char *dst, socklen_t size)); /* char * * inet_ntop(af, src, dst, size) @@ -62,7 +62,7 @@ inet_ntop(af, src, dst, size) int af; const void *src; char *dst; - size_t size; + socklen_t size; { switch (af) { case AF_INET: @@ -91,7 +91,7 @@ static const char * inet_ntop4(src, dst, size) const u_char *src; char *dst; - size_t size; + socklen_t size; { static const char fmt[] = "%u.%u.%u.%u"; char tmp[sizeof "255.255.255.255"]; @@ -114,7 +114,7 @@ static const char * inet_ntop6(src, dst, size) const u_char *src; char *dst; - size_t size; + socklen_t size; { /* * Note that int32_t and int16_t need only be "at least" large enough @@ -194,7 +194,7 @@ inet_ntop6(src, dst, size) /* * Check for overflow, copy, and we're done. */ - if ((size_t)(tp - tmp) > size) { + if ((socklen_t)(tp - tmp) > size) { errno = ENOSPC; return (NULL); } diff --git a/src/kits/network/dns/irs/getnameinfo.c b/src/kits/network/dns/irs/getnameinfo.c index 6e6f3b93a8..b0becdf2b5 100644 --- a/src/kits/network/dns/irs/getnameinfo.c +++ b/src/kits/network/dns/irs/getnameinfo.c @@ -89,11 +89,11 @@ static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t, int)); int getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) const struct sockaddr *sa; - size_t salen; + socklen_t salen; char *host; - size_t hostlen; + socklen_t hostlen; char *serv; - size_t servlen; + socklen_t servlen; int flags; { struct afd *afd; diff --git a/src/kits/network/dns/resolv/res_debug.c b/src/kits/network/dns/resolv/res_debug.c index 9b91fd5985..571df76a2f 100644 --- a/src/kits/network/dns/resolv/res_debug.c +++ b/src/kits/network/dns/resolv/res_debug.c @@ -190,7 +190,7 @@ do_section(const res_state statp, else if (section == ns_s_ar && ns_rr_type(rr) == ns_t_opt) { u_int32_t ttl = ns_rr_ttl(rr); fprintf(file, - "; EDNS: version: %lu, udp=%u, flags=%04lx\n", + "; EDNS: version: %u, udp=%u, flags=%04x\n", (ttl>>16)&0xff, ns_rr_class(rr), ttl&0xffff); } else { n = ns_sprintrr(handle, &rr, NULL, NULL, @@ -642,7 +642,7 @@ p_time(u_int32_t value) { static char nbuf[40]; /* XXX nonreentrant */ if (ns_format_ttl(value, nbuf, sizeof nbuf) < 0) - sprintf(nbuf, "%lu", value); + sprintf(nbuf, "%u", value); return (nbuf); } diff --git a/src/kits/network/socket.cpp b/src/kits/network/socket.cpp index 3fee76f8ee..3e991d2b18 100644 --- a/src/kits/network/socket.cpp +++ b/src/kits/network/socket.cpp @@ -418,7 +418,7 @@ sendmsg(int socket, const struct msghdr *message, int flags) extern "C" int -getsockopt(int socket, int level, int option, void *value, size_t *_length) +getsockopt(int socket, int level, int option, void *value, socklen_t *_length) { if (check_r5_compatibility()) { if (option == R5_SO_FIONREAD) { @@ -447,7 +447,8 @@ getsockopt(int socket, int level, int option, void *value, size_t *_length) extern "C" int -setsockopt(int socket, int level, int option, const void *value, size_t length) +setsockopt(int socket, int level, int option, const void *value, + socklen_t length) { if (check_r5_compatibility()) convert_from_r5_sockopt(level, option); diff --git a/src/servers/net/DHCPClient.cpp b/src/servers/net/DHCPClient.cpp index af7fb0a971..c2a8c18f95 100644 --- a/src/servers/net/DHCPClient.cpp +++ b/src/servers/net/DHCPClient.cpp @@ -80,7 +80,13 @@ enum message_type { }; struct dhcp_option_cookie { - dhcp_option_cookie() : state(0), file_has_options(false), server_name_has_options(false) {} + dhcp_option_cookie() + : + state(0), + file_has_options(false), + server_name_has_options(false) + { + } const uint8* next; uint8 state; @@ -122,7 +128,8 @@ struct dhcp_message { uint8* PutOption(uint8* options, message_option option, uint8 data); uint8* PutOption(uint8* options, message_option option, uint16 data); uint8* PutOption(uint8* options, message_option option, uint32 data); - uint8* PutOption(uint8* options, message_option option, const uint8* data, uint32 size); + uint8* PutOption(uint8* options, message_option option, const uint8* data, + uint32 size); uint8* FinishOptions(uint8 *); } _PACKED; @@ -263,7 +270,8 @@ dhcp_message::PrepareMessage(uint8 type) { uint8 *next = options; next = PutOption(next, OPTION_MESSAGE_TYPE, type); - next = PutOption(next, OPTION_MESSAGE_SIZE, (uint16)htons(sizeof(dhcp_message))); + next = PutOption(next, OPTION_MESSAGE_SIZE, + (uint16)htons(sizeof(dhcp_message))); return next; } @@ -298,7 +306,8 @@ dhcp_message::PutOption(uint8* options, message_option option, uint32 data) uint8* -dhcp_message::PutOption(uint8* options, message_option option, const uint8* data, uint32 size) +dhcp_message::PutOption(uint8* options, message_option option, + const uint8* data, uint32 size) { options[0] = option; options[1] = size; @@ -438,9 +447,10 @@ DHCPClient::_Negotiate(dhcp_state state) if (state == INIT) status = _SendMessage(socket, discover, broadcast); - else + else { status = _SendMessage(socket, request, state != RENEWAL ? broadcast : fServer); + } if (status < B_OK) break; @@ -490,13 +500,15 @@ DHCPClient::_Negotiate(dhcp_state state) _PrepareMessage(request, state); status = _SendMessage(socket, request, broadcast); - // we're sending a broadcast so that all potential offers get an answer + // we're sending a broadcast so that all potential offers + // get an answer break; } case DHCP_ACK: { - if (state != REQUESTING && state != REBINDING && state != RENEWAL) + if (state != REQUESTING && state != REBINDING + && state != RENEWAL) continue; // TODO: we might want to configure the stuff, don't we? @@ -520,7 +532,8 @@ DHCPClient::_Negotiate(dhcp_state state) if (state != REQUESTING) continue; - // try again (maybe we should prefer other servers if this happens more than once) + // try again (maybe we should prefer other servers if this + // happens more than once) status = _SendMessage(socket, discover, broadcast); if (status == B_OK) state = INIT; @@ -591,8 +604,10 @@ DHCPClient::_ParseOptions(dhcp_message& message, BMessage& address) FILE* file = fopen("/etc/resolv.conf", "w"); for (uint32 i = 0; i < size / 4; i++) { printf("DNS: %s\n", _ToString(&data[i*4]).String()); - if (file != NULL) - fprintf(file, "nameserver %s\n", _ToString(&data[i*4]).String()); + if (file != NULL) { + fprintf(file, "nameserver %s\n", + _ToString(&data[i*4]).String()); + } } fclose(file); break; @@ -652,7 +667,8 @@ DHCPClient::_PrepareMessage(dhcp_message& message, dhcp_state state) message.hardware_type = ARP_HARDWARE_TYPE_ETHER; message.hardware_address_length = 6; message.transaction_id = htonl(fTransactionID); - message.seconds_since_start = htons(min_c((fStartTime - system_time()) / 1000000LL, 65535)); + message.seconds_since_start = htons(min_c((fStartTime - system_time()) + / 1000000LL, 65535)); memcpy(message.mac_address, fMAC, 6); message_type type = message.Type(); @@ -669,9 +685,10 @@ DHCPClient::_PrepareMessage(dhcp_message& message, dhcp_state state) // In RENEWAL or REBINDING state, we must set the client_address field, and not // use OPTION_REQUEST_IP_ADDRESS for DHCP_REQUEST messages if (type == DHCP_REQUEST && (state == INIT || state == REQUESTING)) { - next = message.PutOption(next, OPTION_REQUEST_IP_ADDRESS, fAssignedAddress); + next = message.PutOption(next, OPTION_REQUEST_IP_ADDRESS, + (uint32)fAssignedAddress); next = message.PutOption(next, OPTION_REQUEST_PARAMETERS, - kRequiredParameters, sizeof(kRequiredParameters)); + kRequiredParameters, sizeof(kRequiredParameters)); } else message.client_address = fAssignedAddress; @@ -683,7 +700,7 @@ DHCPClient::_PrepareMessage(dhcp_message& message, dhcp_state state) { uint8 *next = message.PrepareMessage(type); next = message.PutOption(next, OPTION_REQUEST_PARAMETERS, - kRequiredParameters, sizeof(kRequiredParameters)); + kRequiredParameters, sizeof(kRequiredParameters)); message.FinishOptions(next); break; }