forked from osmocom/wireshark
Clean up some UN*X-vs-Windows socket issues.
Have a wsutil/socket.h file, for inclusion by everything that uses sockets, that contains the UN*X-vs-Windows #includes and #defines to hide some UN*X-sockets vs. Winsock API differences. That stuff mostly comes from from extcap/extcap-base.h; have that file just include wsutil/socket.h rather than defining that stuff itself. Include it in sharkd_daemon.c. Use socklen_t for the size of things to pass to bind() as the last argument; wsutil/socket.h defines it as int on Windows. Ignore sharkd in Git. Change-Id: I3f2171b7aa613717f52305f62bfd7d43e0172dc6 Reviewed-on: https://code.wireshark.org/review/19796 Petri-Dish: Guy Harris <guy@alum.mit.edu> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
parent
1165dfc8f6
commit
5fbcfd632a
|
@ -105,6 +105,7 @@ randpktdump
|
||||||
rawshark
|
rawshark
|
||||||
reordercap
|
reordercap
|
||||||
reassemble_test
|
reassemble_test
|
||||||
|
sharkd
|
||||||
sshdump
|
sshdump
|
||||||
stamp-h1
|
stamp-h1
|
||||||
text2pcap
|
text2pcap
|
||||||
|
|
|
@ -43,33 +43,7 @@
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
#include <wsutil/socket.h>
|
||||||
#ifdef HAVE_WINDOWS_H
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <ws2tcpip.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_WINSOCK2_H
|
|
||||||
#include <winsock2.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <process.h>
|
|
||||||
|
|
||||||
#define socket_handle_t SOCKET
|
|
||||||
#else
|
|
||||||
/*
|
|
||||||
* UN*X, or Windows pretending to be UN*X with the aid of Cygwin.
|
|
||||||
*/
|
|
||||||
#define closesocket(socket) close(socket)
|
|
||||||
#define socket_handle_t int
|
|
||||||
#define INVALID_SOCKET (-1)
|
|
||||||
#define SOCKET_ERROR (-1)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_ARPA_INET_H
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define EXTCAP_BASE_OPTIONS_ENUM \
|
#define EXTCAP_BASE_OPTIONS_ENUM \
|
||||||
EXTCAP_OPT_LIST_INTERFACES, \
|
EXTCAP_OPT_LIST_INTERFACES, \
|
||||||
|
|
|
@ -35,9 +35,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_SYS_SOCKET_H
|
#include <wsutil/socket.h>
|
||||||
#include <sys/socket.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_NETINET_IN_H
|
#ifdef HAVE_NETINET_IN_H
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
@ -48,23 +46,6 @@
|
||||||
#include <netinet/tcp.h>
|
#include <netinet/tcp.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
#if defined(_WIN32)
|
|
||||||
#ifdef HAVE_WINDOWS_H
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <ws2tcpip.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_WINSOCK2_H
|
|
||||||
#include <winsock2.h>
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
*/
|
|
||||||
#ifdef HAVE_ARPA_INET_H
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <wsutil/strtoi.h>
|
#include <wsutil/strtoi.h>
|
||||||
|
|
||||||
#include "sharkd.h"
|
#include "sharkd.h"
|
||||||
|
@ -80,7 +61,7 @@ socket_init(char *path)
|
||||||
if (!strncmp(path, "unix:", 5))
|
if (!strncmp(path, "unix:", 5))
|
||||||
{
|
{
|
||||||
struct sockaddr_un s_un;
|
struct sockaddr_un s_un;
|
||||||
size_t s_un_len;
|
socklen_t s_un_len;
|
||||||
|
|
||||||
path += 5;
|
path += 5;
|
||||||
|
|
||||||
|
@ -95,7 +76,7 @@ socket_init(char *path)
|
||||||
s_un.sun_family = AF_UNIX;
|
s_un.sun_family = AF_UNIX;
|
||||||
g_strlcpy(s_un.sun_path, path, sizeof(s_un.sun_path));
|
g_strlcpy(s_un.sun_path, path, sizeof(s_un.sun_path));
|
||||||
|
|
||||||
s_un_len = offsetof(struct sockaddr_un, sun_path) + strlen(s_un.sun_path);
|
s_un_len = (socklen_t)(offsetof(struct sockaddr_un, sun_path) + strlen(s_un.sun_path));
|
||||||
|
|
||||||
if (s_un.sun_path[0] == '@')
|
if (s_un.sun_path[0] == '@')
|
||||||
s_un.sun_path[0] = '\0';
|
s_un.sun_path[0] = '\0';
|
||||||
|
|
|
@ -83,6 +83,7 @@ libwsutil_nonrepl_INCLUDES = \
|
||||||
sha2.h \
|
sha2.h \
|
||||||
sign_ext.h \
|
sign_ext.h \
|
||||||
sober128.h \
|
sober128.h \
|
||||||
|
socket.h \
|
||||||
str_util.h \
|
str_util.h \
|
||||||
strnatcmp.h \
|
strnatcmp.h \
|
||||||
strtoi.h \
|
strtoi.h \
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
/* socket.h
|
||||||
|
* Socket wrappers
|
||||||
|
*
|
||||||
|
* Copyright 2016, Dario Lombardo
|
||||||
|
*
|
||||||
|
* Wireshark - Network traffic analyzer
|
||||||
|
* By Gerald Combs <gerald@wireshark.org>
|
||||||
|
* Copyright 1998 Gerald Combs
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*/
|
||||||
|
#ifndef __SOCKET_H__
|
||||||
|
#define __SOCKET_H__
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||||
|
#ifdef HAVE_WINDOWS_H
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <ws2tcpip.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_WINSOCK2_H
|
||||||
|
#include <winsock2.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <process.h>
|
||||||
|
|
||||||
|
#define socket_handle_t SOCKET
|
||||||
|
#define socklen_t int
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* UN*X, or Windows pretending to be UN*X with the aid of Cygwin.
|
||||||
|
*/
|
||||||
|
#ifdef HAVE_UNISTD_H
|
||||||
|
/*
|
||||||
|
* For close().
|
||||||
|
*/
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define closesocket(socket) close(socket)
|
||||||
|
#define socket_handle_t int
|
||||||
|
#define INVALID_SOCKET (-1)
|
||||||
|
#define SOCKET_ERROR (-1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_ARPA_INET_H
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __SOCKET_H__ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Editor modelines - https://www.wireshark.org/tools/modelines.html
|
||||||
|
*
|
||||||
|
* Local variables:
|
||||||
|
* c-basic-offset: 8
|
||||||
|
* tab-width: 8
|
||||||
|
* indent-tabs-mode: t
|
||||||
|
* End:
|
||||||
|
*
|
||||||
|
* vi: set shiftwidth=8 tabstop=8 noexpandtab:
|
||||||
|
* :indentSize=8:tabSize=8:noTabs=false:
|
||||||
|
*/
|
Loading…
Reference in New Issue