diff --git a/src/win32-misc.c b/src/win32-misc.c new file mode 100644 index 0000000000..9ba70f1254 --- /dev/null +++ b/src/win32-misc.c @@ -0,0 +1,60 @@ +#ifdef OS_WIN32 + +#include "suricata-common.h" +#include "win32-misc.h" + +const char* inet_ntop(int af, const void *src, char *dst, uint32_t cnt) +{ + if (af == AF_INET) + { + struct sockaddr_in in; + memset(&in, 0, sizeof(in)); + in.sin_family = AF_INET; + memcpy(&in.sin_addr, src, sizeof(struct in_addr)); + if (0 == getnameinfo((struct sockaddr *)&in, sizeof(struct sockaddr_in), dst, cnt, NULL, 0, NI_NUMERICHOST)) + return dst; + } + else if (af == AF_INET6) + { + struct sockaddr_in6 in6; + memset(&in6, 0, sizeof(in6)); + in6.sin6_family = AF_INET6; + memcpy(&in6.sin6_addr, src, sizeof(struct in_addr6)); + if (0 == getnameinfo((struct sockaddr *)&in6, sizeof(struct sockaddr_in6), dst, cnt, NULL, 0, NI_NUMERICHOST)) + return dst; + } + return NULL; +} + +int inet_pton(int af, const char *src, void *dst) +{ + struct addrinfo hints; + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = af; + + struct addrinfo* result = NULL; + if (0 != getaddrinfo(src, NULL, &hints, &result)) + return -1; + + if (result) { + if (result->ai_family == AF_INET) { + struct sockaddr_in* in = (struct sockaddr_in*)result->ai_addr; + memcpy(dst, &in->sin_addr, 4); + } + else if (result->ai_family == AF_INET6) { + struct sockaddr_in6* in6 = (struct sockaddr_in6*)result->ai_addr; + memcpy(dst, &in6->sin6_addr, 16); + } + else { + freeaddrinfo(result); + return -1; + } + + freeaddrinfo(result); + return 1; + } + + return -1; +} + +#endif /* OS_WIN32 */ diff --git a/src/win32-misc.h b/src/win32-misc.h new file mode 100644 index 0000000000..d235cc884a --- /dev/null +++ b/src/win32-misc.h @@ -0,0 +1,12 @@ +#ifndef __WIN32_MISC_H__ +#define __WIN32_MISC_H__ + +#define index strchr +#define rindex strrchr + +const char* inet_ntop(int af, const void *src, char *dst, uint32_t cnt); +int inet_pton(int af, const char *src, void *dst); + +#define geteuid() (0) + +#endif diff --git a/src/win32-syslog.h b/src/win32-syslog.h new file mode 100644 index 0000000000..78aa06671f --- /dev/null +++ b/src/win32-syslog.h @@ -0,0 +1,80 @@ +/** + * syslog.h does not exist in the mingw environment, this file replaces it + */ + +/* + * Copyright (c) 1982, 1986, 1988, 1993 + * 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 + * 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. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. + * + * @(#)syslog.h 8.1 (Berkeley) 6/2/93 + */ + +#ifndef __WIN32_SYSLOG_H__ +#define __WIN32_SYSLOG_H__ + +#define LOG_EMERG 0 /* system is unusable */ +#define LOG_ALERT 1 /* action must be taken immediately */ +#define LOG_CRIT 2 /* critical conditions */ +#define LOG_ERR 3 /* error conditions */ +#define LOG_WARNING 4 /* warning conditions */ +#define LOG_NOTICE 5 /* normal but significant condition */ +#define LOG_INFO 6 /* informational */ +#define LOG_DEBUG 7 /* debug-level messages */ + +#define LOG_KERN (0<<3) /* kernel messages */ +#define LOG_USER (1<<3) /* random user-level messages */ +#define LOG_MAIL (2<<3) /* mail system */ +#define LOG_DAEMON (3<<3) /* system daemons */ +#define LOG_AUTH (4<<3) /* security/authorization messages */ +#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */ +#define LOG_LPR (6<<3) /* line printer subsystem */ +#define LOG_NEWS (7<<3) /* network news subsystem */ +#define LOG_UUCP (8<<3) /* UUCP subsystem */ +#define LOG_CRON (9<<3) /* clock daemon */ +#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */ +#define LOG_FTP (11<<3) /* ftp daemon */ + + /* other codes through 15 reserved for system use */ +#define LOG_LOCAL0 (16<<3) /* reserved for local use */ +#define LOG_LOCAL1 (17<<3) /* reserved for local use */ +#define LOG_LOCAL2 (18<<3) /* reserved for local use */ +#define LOG_LOCAL3 (19<<3) /* reserved for local use */ +#define LOG_LOCAL4 (20<<3) /* reserved for local use */ +#define LOG_LOCAL5 (21<<3) /* reserved for local use */ +#define LOG_LOCAL6 (22<<3) /* reserved for local use */ +#define LOG_LOCAL7 (23<<3) /* reserved for local use */ + + +/* + * The current win32 implementation of syslog is dummy and does nothing. + */ +#define closelog() +#define openlog(__ident, __option, __facility) +#define setlogmask (__mask) +#define syslog(__pri, __fmt, __param) + +#endif