From 4883124668db0f3c7e3e85537ed36fbd7f9bb508 Mon Sep 17 00:00:00 2001 From: darylm503 Date: Wed, 1 Feb 2012 00:17:05 +0000 Subject: StdLib: Fix compiler compatibility issues: tcp.h: Fix packed structure syntax. cdefs.h is not included so the existing __packed attribute was not properly expanded. Non-GCC compilers were also not handled correctly. Changing to the pack(n) pragma is compatible between all supported compilers. SysCalls.c: The utimes() function has a fixed number of arguments and calls a function that takes a va_list argument. GCC will not allow the va_start, etc., macros to be used in a function with a fixed number of arguments, even though that is valid C. The workaround was to create a worker function for utimes() that takes a variable number of arguments. The worker function then uses the va_* macros. Signed-off-by: darylm503 Reviewed-by: leegrosenbaum git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12977 6f19259b-4bc3-4df7-8a09-765794883524 --- StdLib/Include/netinet/tcp.h | 153 +++++++++++++++++++++++-------------------- 1 file changed, 82 insertions(+), 71 deletions(-) (limited to 'StdLib/Include') diff --git a/StdLib/Include/netinet/tcp.h b/StdLib/Include/netinet/tcp.h index 8bb8f61ec9..31948a6a70 100644 --- a/StdLib/Include/netinet/tcp.h +++ b/StdLib/Include/netinet/tcp.h @@ -1,8 +1,17 @@ -/* $NetBSD: tcp.h,v 1.28 2007/12/25 18:33:47 perry Exp $ */ +/** @file + Declarations for TCP. + + Copyright (c) 2012, Intel Corporation. All rights reserved.
+ This program and the accompanying materials are licensed and made available under + the terms and conditions of the BSD License that accompanies this distribution. + The full text of the license may be found at + http://opensource.org/licenses/bsd-license. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -/* * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -28,105 +37,107 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#)tcp.h 8.1 (Berkeley) 6/10/93 + * @(#)tcp.h 8.1 (Berkeley) 6/10/93 + NetBSD: tcp.h,v 1.28 2007/12/25 18:33:47 perry Exp */ - #ifndef _NETINET_TCP_H_ #define _NETINET_TCP_H_ #include -#if defined(_NETBSD_SOURCE) - typedef u_int32_t tcp_seq; + +/* Flag definitions for tcphdr.th_flags */ +#define TH_FIN 0x01 +#define TH_SYN 0x02 +#define TH_RST 0x04 +#define TH_PUSH 0x08 +#define TH_ACK 0x10 +#define TH_URG 0x20 +#define TH_ECE 0x40 +#define TH_CWR 0x80 + +#pragma pack(1) /* * TCP header. * Per RFC 793, September, 1981. * Updated by RFC 3168, September, 2001. */ struct tcphdr { - u_int16_t th_sport; /* source port */ - u_int16_t th_dport; /* destination port */ - tcp_seq th_seq; /* sequence number */ - tcp_seq th_ack; /* acknowledgement number */ + u_int16_t th_sport; /* source port */ + u_int16_t th_dport; /* destination port */ + tcp_seq th_seq; /* sequence number */ + tcp_seq th_ack; /* acknowledgement number */ #if BYTE_ORDER == LITTLE_ENDIAN - /*LINTED non-portable bitfields*/ - u_int8_t th_x2:4, /* (unused) */ - th_off:4; /* data offset */ + /*LINTED non-portable bitfields*/ + u_int8_t th_x2:4, /* (unused) */ + th_off:4; /* data offset */ #endif #if BYTE_ORDER == BIG_ENDIAN - /*LINTED non-portable bitfields*/ - u_int8_t th_off:4, /* data offset */ - th_x2:4; /* (unused) */ + /*LINTED non-portable bitfields*/ + u_int8_t th_off:4, /* data offset */ + th_x2:4; /* (unused) */ #endif - u_int8_t th_flags; -#define TH_FIN 0x01 -#define TH_SYN 0x02 -#define TH_RST 0x04 -#define TH_PUSH 0x08 -#define TH_ACK 0x10 -#define TH_URG 0x20 -#define TH_ECE 0x40 -#define TH_CWR 0x80 - u_int16_t th_win; /* window */ - u_int16_t th_sum; /* checksum */ - u_int16_t th_urp; /* urgent pointer */ -} __packed; - -#define TCPOPT_EOL 0 -#define TCPOPT_NOP 1 -#define TCPOPT_MAXSEG 2 -#define TCPOLEN_MAXSEG 4 -#define TCPOPT_WINDOW 3 -#define TCPOLEN_WINDOW 3 -#define TCPOPT_SACK_PERMITTED 4 /* Experimental */ -#define TCPOLEN_SACK_PERMITTED 2 -#define TCPOPT_SACK 5 /* Experimental */ -#define TCPOPT_TIMESTAMP 8 -#define TCPOLEN_TIMESTAMP 10 -#define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */ - -#define TCPOPT_TSTAMP_HDR \ + u_int8_t th_flags; + u_int16_t th_win; /* window */ + u_int16_t th_sum; /* checksum */ + u_int16_t th_urp; /* urgent pointer */ +}; +#pragma pack() + +#define TCPOPT_EOL 0 +#define TCPOPT_NOP 1 +#define TCPOPT_MAXSEG 2 +#define TCPOLEN_MAXSEG 4 +#define TCPOPT_WINDOW 3 +#define TCPOLEN_WINDOW 3 +#define TCPOPT_SACK_PERMITTED 4 /* Experimental */ +#define TCPOLEN_SACK_PERMITTED 2 +#define TCPOPT_SACK 5 /* Experimental */ +#define TCPOPT_TIMESTAMP 8 +#define TCPOLEN_TIMESTAMP 10 +#define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */ + +#define TCPOPT_TSTAMP_HDR \ (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP) -#define TCPOPT_SIGNATURE 19 /* Keyed MD5: RFC 2385 */ -#define TCPOLEN_SIGNATURE 18 -#define TCPOLEN_SIGLEN (TCPOLEN_SIGNATURE+2) /* padding */ +#define TCPOPT_SIGNATURE 19 /* Keyed MD5: RFC 2385 */ +#define TCPOLEN_SIGNATURE 18 +#define TCPOLEN_SIGLEN (TCPOLEN_SIGNATURE+2) /* padding */ -#define MAX_TCPOPTLEN 40 /* max # bytes that go in options */ +#define MAX_TCPOPTLEN 40 /* max # bytes that go in options */ -/* - * Default maximum segment size for TCP. - * This is defined by RFC 1112 Sec 4.2.2.6. +/* Default maximum segment size for TCP. + * This is defined by RFC 1112 Sec 4.2.2.6. */ -#define TCP_MSS 536 +#define TCP_MSS 536 -#define TCP_MINMSS 216 +#define TCP_MINMSS 216 -#define TCP_MAXWIN 65535 /* largest value for (unscaled) window */ +#define TCP_MAXWIN 65535 /* largest value for (unscaled) window */ -#define TCP_MAX_WINSHIFT 14 /* maximum window shift */ +#define TCP_MAX_WINSHIFT 14 /* maximum window shift */ -#define TCP_MAXBURST 4 /* maximum segments in a burst */ +#define TCP_MAXBURST 4 /* maximum segments in a burst */ -#endif /* _NETBSD_SOURCE */ +/* User-settable options (used with setsockopt). */ +#define TCP_NODELAY 1 /* don't delay send to coalesce packets */ +#define TCP_MAXSEG 2 /* set maximum segment size */ +#define TCP_KEEPIDLE 3 -/* - * User-settable options (used with setsockopt). - */ -#define TCP_NODELAY 1 /* don't delay send to coalesce packets */ -#define TCP_MAXSEG 2 /* set maximum segment size */ -#define TCP_KEEPIDLE 3 #ifdef notyet -#define TCP_NOPUSH 4 /* reserved for FreeBSD compat */ +#define TCP_NOPUSH 4 /* reserved for FreeBSD compat */ #endif -#define TCP_KEEPINTVL 5 -#define TCP_KEEPCNT 6 -#define TCP_KEEPINIT 7 + +#define TCP_KEEPINTVL 5 +#define TCP_KEEPCNT 6 +#define TCP_KEEPINIT 7 + #ifdef notyet -#define TCP_NOOPT 8 /* reserved for FreeBSD compat */ +#define TCP_NOOPT 8 /* reserved for FreeBSD compat */ #endif -#define TCP_MD5SIG 0x10 /* use MD5 digests (RFC2385) */ -#define TCP_CONGCTL 0x20 /* selected congestion control */ + +#define TCP_MD5SIG 0x10 /* use MD5 digests (RFC2385) */ +#define TCP_CONGCTL 0x20 /* selected congestion control */ #endif /* !_NETINET_TCP_H_ */ -- cgit v1.2.3