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:
Guy Harris 2017-01-25 22:20:07 -08:00
parent 1165dfc8f6
commit 5fbcfd632a
5 changed files with 87 additions and 49 deletions

1
.gitignore vendored
View File

@ -105,6 +105,7 @@ randpktdump
rawshark
reordercap
reassemble_test
sharkd
sshdump
stamp-h1
text2pcap

View File

@ -43,33 +43,7 @@
#include <io.h>
#endif
#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
#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
#include <wsutil/socket.h>
#define EXTCAP_BASE_OPTIONS_ENUM \
EXTCAP_OPT_LIST_INTERFACES, \

View File

@ -35,9 +35,7 @@
#include <unistd.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#include <wsutil/socket.h>
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
@ -48,23 +46,6 @@
#include <netinet/tcp.h>
#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 "sharkd.h"
@ -80,7 +61,7 @@ socket_init(char *path)
if (!strncmp(path, "unix:", 5))
{
struct sockaddr_un s_un;
size_t s_un_len;
socklen_t s_un_len;
path += 5;
@ -95,7 +76,7 @@ socket_init(char *path)
s_un.sun_family = AF_UNIX;
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] == '@')
s_un.sun_path[0] = '\0';

View File

@ -83,6 +83,7 @@ libwsutil_nonrepl_INCLUDES = \
sha2.h \
sign_ext.h \
sober128.h \
socket.h \
str_util.h \
strnatcmp.h \
strtoi.h \

81
wsutil/socket.h Normal file
View File

@ -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:
*/