Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
233 lines (194 sloc) 6.87 KB
/*
* Copyright (c) 2010 Luigi Rizzo, Universita` di Pisa
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* headers to build userland ipfw under tcc.
*/
#ifndef _TCC_GLUE_H
#define _TCC_GLUE_H
//#define __restrict
#define NULL ((void *)0)
typedef int size_t;
typedef unsigned char u_char;
typedef unsigned char uint8_t;
typedef unsigned char u_int8_t;
typedef unsigned short u_short;
typedef unsigned short uint16_t;
typedef unsigned short u_int16_t;
typedef int __int32_t;
typedef int int32_t;
typedef int socklen_t;
typedef int pid_t;
typedef unsigned int time_t;
typedef unsigned int uint;
typedef unsigned int u_int;
typedef unsigned int uint32_t;
typedef unsigned int u_int32_t;
typedef unsigned int gid_t;
typedef unsigned int uid_t;
typedef unsigned long u_long;
typedef unsigned long uintptr_t;
typedef long long int int64_t;
typedef unsigned long long int uint64_t;
typedef unsigned long long int u_int64_t;
typedef uint32_t in_addr_t;
struct in_addr {
uint32_t s_addr;
};
struct sockaddr_in {
uint8_t _sin_len;
uint8_t sin_family;
uint16_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
#define IFNAMSIZ 16
#define INET6_ADDRSTRLEN 64
struct in6_addr {
union {
uint8_t __s6_addr8[16];
uint16_t __s6_addr16[8];
uint32_t __s6_addr32[4];
} __u6; // _addr; /* 128-bit IP6 address */
};
#define LITTLE_ENDIAN 1234
#define BYTE_ORDER LITTLE_ENDIAN
/* to be revised */
#define EX_OK 0
#define EX_DATAERR 1
#define EX_OSERR 2
#define EX_UNAVAILABLE 3
#define EX_USAGE 4
#define EX_NOHOST 5
#define EEXIST 1
#define EINVAL 2
#define ERANGE 3
#define ESRCH 4
#define IPPROTO_IP 1
#define IPPROTO_IPV6 2
#define IPPROTO_RAW 100
#define IPTOS_LOWDELAY 100
#define IPTOS_MINCOST 101
#define IPTOS_RELIABILITY 102
#define IPTOS_THROUGHPUT 103
#define SOCK_RAW 12
#define AF_INET 2
#define AF_INET6 28
#define INADDR_ANY 0
#define bcmp(src, dst, len) memcmp(src, dst, len)
#define bcopy(src, dst, len) memcpy(dst, src, len)
#define bzero(p, len) memset(p, 0, len)
#define index(s, c) strchr(s, c)
char *strsep(char **stringp, const char *delim);
void warn(const char *, ...);
//void warnx(const char *, ...);
#define warnx warn
void err(int, const char *, ...);
#define errx err
uint16_t htons(uint16_t)__attribute__ ((stdcall));
uint16_t ntohs(uint16_t)__attribute__ ((stdcall));
uint32_t htonl(uint32_t)__attribute__ ((stdcall));
uint32_t ntohl(uint32_t)__attribute__ ((stdcall));
int inet_aton(const char *cp, struct in_addr *pin);
char * inet_ntoa(struct in_addr);
const char * inet_ntop(int af, const void * src, char * dst,
socklen_t size);
int inet_pton(int af, const char * src, void * dst);
struct group {
gid_t gr_gid;
char gr_name[16];
};
struct passwd {
uid_t pw_uid;
char pw_name[16];
};
#define getpwnam(s) (NULL)
#define getpwuid(s) (NULL)
#define getgrnam(x) (NULL)
#define getgrgid(x) (NULL)
int getopt(int argc, char * const argv[], const char *optstring);
int getsockopt(int s, int level, int optname, void * optval,
socklen_t * optlen);
int setsockopt(int s, int level, int optname, const void *optval,
socklen_t optlen);
struct protoent {
char *p_name; /* official protocol name */
char **p_aliases; /* alias list */
short p_proto; /* protocol # */
};
struct servent {
char *s_name; /* official service name */
char **s_aliases; /* alias list */
short s_port; /* port # */
char *s_proto; /* protocol to use */
};
struct hostent {
char *h_name; /* official name of host */
char **h_aliases; /* alias list */
short h_addrtype; /* host address type */
short h_length; /* length of address */
char **h_addr_list; /* list of addresses */
#define h_addr h_addr_list[0] /* address, for backward compat */
};
struct hostent* gethostbyaddr(const char* addr, int len, int type)__attribute__ ((stdcall));
struct hostent* gethostbyname(const char *name)__attribute__ ((stdcall));
struct protoent* getprotobynumber(int number)__attribute__ ((stdcall));
struct protoent* getprotobyname(const char* name)__attribute__ ((stdcall));
struct servent* getservbyport(int port, const char* proto)__attribute__ ((stdcall));
struct servent* getservbyname(const char* name, const char* proto) __attribute__ ((stdcall));
extern int optind;
extern char *optarg;
#include <windef.h>
#define WSADESCRIPTION_LEN 256
#define WSASYS_STATUS_LEN 128
typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYS_STATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
} WSADATA, * LPWSADATA;
int WSAStartup(
WORD wVersionRequested,
LPWSADATA lpWSAData
);
int
WSACleanup(void);
int WSAGetLastError();
/* return error on process handling */
#define pipe(f) (-1)
#define kill(p, s) (-1)
#define waitpid(w,s,o) (-1)
#define fork(x) (-1)
#define execvp(f, a) (-1)
#define _W_INT(i) (i)
#define _WSTATUS(x) (_W_INT(x) & 0177)
#define WIFEXITED(x) (_WSTATUS(x) == 0)
#define WEXITSTATUS(x) (_W_INT(x) >> 8)
#define _WSTOPPED 0177 /* _WSTATUS if process is stopped */
#define WIFSIGNALED(x) (_WSTATUS(x) != _WSTOPPED && _WSTATUS(x) != 0)
#define WTERMSIG(x) (_WSTATUS(x))
#endif /* _TCC_GLUE_H */