mirror of
https://github.com/SDL-Hercules-390/hyperion.git
synced 2026-07-26 02:29:51 +02:00
126ece58f9
* Address miscellaneous compiler warnings This commit looks through all compiler warnings generated by clang and MSVC (including Windows ARM64) and picks the low hanging fruit. Compiling (clang version 20.1.8) with added flags: -Wno-incompatible-pointer-types -Wno-pointer-sign -Wno-unused-but-set-variable -Wno-unused-local-typedef Changes: bootstrap.c: warning : format specifies type 'unsigned int' but the argument has type 'DWORD' (aka 'unsigned long') ctc: warning : unused variable 'saw_if' dyn76.c: warning : variable 'R4' is used uninitialized whenever 'if' condition is false getopt.c: warning : a function definition without a prototype is deprecated in all versions of C and is not supported in C23 hdl.c: warning : unused parameter 'flag' [-Wunused-parameter] msgenu.h: ... an invalid preprocessing token [-Winvalid-token-paste] tt32api.h: warning : non-portable path to file 'tt32if.h'; specified path differs in case from file name on disk vstore.h: warning : absolute value function 'labs' given an argument of type '__ptrdiff_t' (aka 'long long') but has parameter of type 'long' which may cause truncation of value zvector2.c: remove '_USE_128_' define that was moved to zvector.h --- Compiling (cl.exe version 19.50.35725) with added flags: /W4 /wd4323 /wd4152 /wd4703 /wd4201 Changes: warning C4245: 'function': conversion from 'int' to 'BYTE', signed/unsigned mismatch (compiling source file control.c) warning C4389: '!=': signed/unsigned mismatch (compiling source file control.c) warning C4100: 'secs': unreferenced parameter (compiling source file netsupp.c) warning C4100: 'iFlags': unreferenced parameter (compiling source file tuntap.c) --- Compiling (gcc (Ubuntu 15.2.0-4ubuntu4) 15.2.0): Compiling (gcc (GCC) 16.0.1 20260305 (Red Hat 16.0.1-0)): Wunterminated-string-initialization was introduced in GCC-15. An alternate solution would be to use: __attribute__((nonstring)) Changes: loadmem.c:102:32: warning: initializer-string for array of ‘char’ truncates NUL terminator but destination lacks ‘nonstring’ attribute (9 chars into 8 available) [-Wunterminated-string-initialization] --- Compiling (clang version 22.1.1 (Fedora 22.1.1-2.fc44)) Compiling (gcc (GCC) 16.0.1 20260305 (Red Hat 16.0.1-0)) Changes: cgibin.c:1662:1: warning: ‘/*’ within comment [-Wcomment] dasdcat.c:463:13: warning: variable ‘trks’ set but not used [-Wunused-but-set-variable=] dasdpdsu.c:172:13: warning: variable ‘trks’ set but not used [-Wunused-but-set-variable=] hscutl.c:1325:15: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] hscutl.c:1326:15: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] msgenu.h:222:33: warning: ‘off_size’ may be used uninitialized [-Wmaybe-uninitialized] (after fixing above) transact.c:230:13: warning: variable ‘effective_addr2’ set but not used [-Wunused-but-set-variable=] transact.c:708:9: warning: variable ‘effective_addr1’ set but not used [-Wunused-but-set-variable=] * VS2013: fix compile error C99 Compliant floating-point classification macros were introduced in VS2013; see: https://devblogs.microsoft.com/cppblog/c99-library-support-in-visual-studio-2013/ * w32stape.c: CAS multi-threaded initialization Use Compare-and-Swap in initialization functions that may be called from multiple threads. * opcode.h: avoid declaring ops w/ dynamic instructions Allows modification of the storage class specifier and attributes of undefined instructions (UNDEF_INST).
284 lines
16 KiB
C
284 lines
16 KiB
C
/* TT32API.H (C) Copyright Software Development Laboratories, 2002-2019 */
|
|
/* TunTap32 DLL exported functions interface */
|
|
/* */
|
|
/* Released under "The Q Public License Version 1" */
|
|
/* (http://www.hercules-390.org/herclic.html) as modifications to */
|
|
/* Hercules. */
|
|
|
|
// Copyright (C) 2002-2019, Software Development Laboratories, "Fish" (David B. Trout)
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// TT32API.h -- TunTap32 DLL exported functions interface
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// T U N T A P 3 2 . D L L
|
|
//
|
|
// EXPORTED FUNCTION DEFINITIONS
|
|
//
|
|
// These functions provide a 'C' language interface and can be called from
|
|
// any type of app that can access a DLL: VB, C/C++, PowerBuilder, etc.
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _TT32API_H_
|
|
#define _TT32API_H_
|
|
|
|
#include "tt32if.h"
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
// TunTap32.dll name
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#define TUNTAP_APPNAME "TunTap"
|
|
|
|
#if defined(_WIN64)
|
|
#if defined(_UNICODE) || defined(UNICODE)
|
|
#if defined(_DEBUG) || defined(DEBUG)
|
|
#define BASE_TUNTAP32_NAME TUNTAP_APPNAME "64UD"
|
|
#else
|
|
#define BASE_TUNTAP32_NAME TUNTAP_APPNAME "64U"
|
|
#endif
|
|
#else
|
|
#if defined(_DEBUG) || defined(DEBUG)
|
|
#define BASE_TUNTAP32_NAME TUNTAP_APPNAME "64D"
|
|
#else
|
|
#define BASE_TUNTAP32_NAME TUNTAP_APPNAME "64"
|
|
#endif
|
|
#endif
|
|
#else
|
|
#if defined(_UNICODE) || defined(UNICODE)
|
|
#if defined(_DEBUG) || defined(DEBUG)
|
|
#define BASE_TUNTAP32_NAME TUNTAP_APPNAME "32UD"
|
|
#else
|
|
#define BASE_TUNTAP32_NAME TUNTAP_APPNAME "32U"
|
|
#endif
|
|
#else
|
|
#if defined(_DEBUG) || defined(DEBUG)
|
|
#define BASE_TUNTAP32_NAME TUNTAP_APPNAME "32D"
|
|
#else
|
|
#define BASE_TUNTAP32_NAME TUNTAP_APPNAME "32"
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if defined( _MSC_VER ) && defined( AUTOLINK_TUNTAP32_LIB )
|
|
#pragma comment ( lib, BASE_TUNTAP32_NAME ".lib" )
|
|
#endif
|
|
#define TUNTAP32_DLLNAME BASE_TUNTAP32_NAME ".dll"
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
// TunTap32 structures, #defines and typedefs, etc...
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
// Flags...
|
|
|
|
#define _O_TT32NOTIFY 0x08000000 // open flag: notify when packets arrive
|
|
|
|
// Constants...
|
|
|
|
#define TT32MINMTU ( 60) // minimum MTU value
|
|
#define TT32DEFMTU ( 1500) // default MTU value
|
|
#define TT32MAXMTU ((64*1024)-14) // maximum MTU value (14 == eth_hdr_size)
|
|
|
|
#define TT32_MAX_MULTICAST_LIST_ENTRIES (32)
|
|
#define TT32_MAX_IPADDRESS_LIST_ENTRIES (32)
|
|
|
|
// ioctl codes...
|
|
|
|
#define TUNSETNOCSUM _IOW('T', 200, int) // (UNSUPPORTED)
|
|
#define TUNSETDEBUG _IOW('T', 201, int) // Set debugging flags
|
|
#define TUNSETIFF _IOW('T', 202, int) // Set TUN/TAP Flags (*)
|
|
#define TUNSETPERSIST _IOW('T', 203, int) // (UNSUPPORTED)
|
|
#define TUNSETOWNER _IOW('T', 204, int) // (UNSUPPORTED)
|
|
|
|
#define TT32SDEVBUFF _IOW('T', 220, int) // Set Kernel buffer size (*)
|
|
#define TT32GDEVBUFF _IOR('T', 220, int) // Get Kernel buffer size
|
|
#define TT32SIOBUFF _IOW('T', 221, int) // Set Read buffer size (*)
|
|
#define TT32GIOBUFF _IOR('T', 221, int) // Get Read buffer size
|
|
#define TT32STIMEOUT _IOW('T', 222, int) // Set Read timeout value (*)
|
|
#define TT32GTIMEOUT _IOR('T', 222, int) // Get Read timeout value
|
|
#define TT32GSTATS _IOR('T', 223, int) // Retrieve statistics
|
|
|
|
// (*) Rejected if interface is already IFF_UP.
|
|
|
|
#define TT32AIFDSTADDR _IOW('T', 224, int) // Add Interface Destination Address
|
|
#define TT32DIFDSTADDR _IOW('T', 225, int) // Delete Interface Destination Address
|
|
#define TT32QIFDSTADDRS _IOR('T', 226, int) // Query Interface Destination Addresses
|
|
|
|
|
|
struct tt32ctl // ioctl request structure
|
|
{
|
|
union
|
|
{
|
|
char ctln_name[IFNAMSIZ]; // iface name (e.g. "tap0", "tun1", etc)
|
|
} tt32_ctln;
|
|
|
|
union
|
|
{
|
|
int ctlu_devbuffsize; // Kernel buffer size (def: 1M)
|
|
int ctlu_iobuffsize; // Read buffer size (def: 64K)
|
|
int ctlu_readtimeout; // Read timeout value (def: 5 secs)
|
|
int ctlu_debugflags; // Debugging flags
|
|
#define TT32DBG_OLDNEW 0x80000000 // Old/New values
|
|
#define TT32DBG_IO_DATA 0x40000000 // Hexdump packet data
|
|
#define TT32DBG_RD_ARP 0x00008000 // ARP
|
|
#define TT32DBG_RD_OTHER 0x00004000 // Other
|
|
#define TT32DBG_WR_ARP 0x00000080 // ARP
|
|
#define TT32DBG_WR_OTHER 0x00000040 // Other
|
|
} tt32_ctlu;
|
|
};
|
|
|
|
#define tt32ctl_name tt32_ctln.ctln_name
|
|
#define tt32ctl_devbuffsize tt32_ctlu.ctlu_devbuffsize
|
|
#define tt32ctl_iobuffsize tt32_ctlu.ctlu_iobuffsize
|
|
#define tt32ctl_readtimeout tt32_ctlu.ctlu_readtimeout
|
|
|
|
// WinPCap device driver capture buffer sizes
|
|
|
|
#define MIN_CAPTURE_BUFFSIZE (64*1024) // minimum = 64K
|
|
#define DEF_CAPTURE_BUFFSIZE (1*1024*1024) // default = 1M
|
|
#define MAX_CAPTURE_BUFFSIZE (16*1024*1024) // maximum = 16M
|
|
|
|
// FishPack I/O buffer sizes
|
|
|
|
#define MIN_PACKET_BUFFSIZE (16*1024) // minimum = 16K
|
|
#define DEF_PACKET_BUFFSIZE (1*64*1024) // default = 64K
|
|
#define MAX_PACKET_BUFFSIZE (1024*1024) // maximum = 1M
|
|
|
|
typedef struct TT32STATS
|
|
{
|
|
uint32_t dwStructSize; // size of this structure
|
|
uint32_t dwKernelBuffSize; // size of kernel capture buffer
|
|
uint32_t dwReadBuffSize; // size of dll I/O buffer
|
|
uint32_t dwMaxBytesReceived; // max dll I/O bytes received
|
|
|
|
int64_t n64WriteCalls; // total #of write requests
|
|
int64_t n64WriteIOs; // total #of write I/Os
|
|
|
|
int64_t n64ReadCalls; // total #of read requests
|
|
int64_t n64ReadIOs; // total #of read I/Os
|
|
|
|
int64_t n64PacketsRead; // total #of packets read
|
|
int64_t n64PacketsWritten; // total #of packets written
|
|
|
|
int64_t n64BytesRead; // total #of bytes read
|
|
int64_t n64BytesWritten; // total #of bytes written
|
|
|
|
int64_t n64InternalPackets; // total #of packets handled internally
|
|
int64_t n64IgnoredPackets; // total #of packets ignored
|
|
|
|
// New version 3.3 counters...
|
|
|
|
int64_t n64OwnPacketsIgnored; // total #of packets read with src MAC == our MAC
|
|
int64_t n64ZeroMACPacketsRead; // total #of packets read with dst MAC all zeros
|
|
int64_t n64ZeroMACPacketsWritten; // total #of packets written with dst MAC all zeros
|
|
int64_t n64From0MACPacketsRead; // total #of packets read with src MAC all zeros
|
|
int64_t n64From0MACPacketsWritten; // total #of packets written with src MAC all zeros
|
|
}
|
|
TT32STATS, *PTT32STATS;
|
|
|
|
|
|
#ifndef EXPORT
|
|
#define EXPORT // we must be importing instead of exporting)
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
// TunTap32.dll exported functions...
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
typedef void (__cdecl *ptr_to_print_debug_string_func)(const char* debug_string);
|
|
|
|
extern const char* WINAPI EXPORT tuntap32_copyright_string ();
|
|
extern const char* WINAPI EXPORT tuntap32_version_string ();
|
|
extern void WINAPI EXPORT tuntap32_version_numbers (int* major, int* inter, int* minor, int* build);
|
|
extern int WINAPI EXPORT tuntap32_set_debug_output_func (ptr_to_print_debug_string_func pfn);
|
|
extern int WINAPI EXPORT tuntap32_open (char* gatewaydev, int flags);
|
|
extern int WINAPI EXPORT tuntap32_write (int fd, u_char* buffer, u_long len);
|
|
extern int WINAPI EXPORT tuntap32_beg_write_multi (int fd, u_long bufsiz); // (WinPCap v4.1+ only)
|
|
extern int WINAPI EXPORT tuntap32_end_write_multi (int fd); // (WinPCap v4.1+ only)
|
|
extern int WINAPI EXPORT tuntap32_read (int fd, u_char* buffer, u_long len);
|
|
extern int WINAPI EXPORT tuntap32_close (int fd);
|
|
extern int WINAPI EXPORT tuntap32_ioctl (int fd, int request, char* argp);
|
|
extern int WINAPI EXPORT tuntap32_get_stats (int fd, TT32STATS* stats);
|
|
extern const char* WINAPI EXPORT tuntap32_get_default_iface ();
|
|
extern void WINAPI EXPORT tuntap32_build_herc_iface_mac (u_char* mac, const u_char* ip);
|
|
extern u_short WINAPI EXPORT tuntap32_calc_inet_checksum (u_char* buffer, u_long bytes);
|
|
extern u_short WINAPI EXPORT tuntap32_calc_checksum (u_char* buffer, u_long bytes);
|
|
extern int WINAPI EXPORT tuntap32_socketpair (int domain, int type, int protocol, int socket_vector[2]);
|
|
|
|
// (functions to work around an as-yet unidentified/unresolved 'errno' bug)
|
|
|
|
extern const char* WINAPI EXPORT tuntap32_copyright_string_ex ( int* eno);
|
|
extern const char* WINAPI EXPORT tuntap32_version_string_ex ( int* eno);
|
|
extern void WINAPI EXPORT tuntap32_version_numbers_ex (int* major, int* inter, int* minor, int* build, int* eno);
|
|
extern int WINAPI EXPORT tuntap32_set_debug_output_func_ex (ptr_to_print_debug_string_func pfn, int* eno);
|
|
extern int WINAPI EXPORT tuntap32_open_ex (char* gatewaydev, int flags, int* eno);
|
|
extern int WINAPI EXPORT tuntap32_write_ex (int fd, u_char* buffer, u_long len, int* eno);
|
|
extern int WINAPI EXPORT tuntap32_beg_write_multi_ex (int fd, u_long bufsiz, int* eno); // (WinPCap v4.1+ only)
|
|
extern int WINAPI EXPORT tuntap32_end_write_multi_ex (int fd, int* eno); // (WinPCap v4.1+ only)
|
|
extern int WINAPI EXPORT tuntap32_read_ex (int fd, u_char* buffer, u_long len, int* eno);
|
|
extern int WINAPI EXPORT tuntap32_close_ex (int fd, int* eno);
|
|
extern int WINAPI EXPORT tuntap32_ioctl_ex (int fd, int request, char* argp, int* eno);
|
|
extern int WINAPI EXPORT tuntap32_get_stats_ex (int fd, TT32STATS* stats, int* eno);
|
|
extern const char* WINAPI EXPORT tuntap32_get_default_iface_ex ( int* eno);
|
|
extern void WINAPI EXPORT tuntap32_build_herc_iface_mac_ex (u_char* mac, const u_char* ip, int* eno);
|
|
extern u_short WINAPI EXPORT tuntap32_calc_inet_checksum_ex (u_char* buffer, u_long bytes, int* eno);
|
|
extern u_short WINAPI EXPORT tuntap32_calc_checksum_ex (u_char* buffer, u_long bytes, int* eno);
|
|
extern int WINAPI EXPORT tuntap32_socketpair_ex (int domain, int type, int protocol, int socket_vector[2], int* eno);
|
|
|
|
// (in case they want to use LoadLibrary and GetProcAddress instead)
|
|
|
|
typedef const char* (WINAPI *ptuntap32_copyright_string) ();
|
|
typedef const char* (WINAPI *ptuntap32_version_string) ();
|
|
typedef void (WINAPI *ptuntap32_version_numbers) (int*,int*,int*,int*);
|
|
typedef int (WINAPI *ptuntap32_set_debug_output_func) (ptr_to_print_debug_string_func);
|
|
typedef int (WINAPI *ptuntap32_open) (char*,int);
|
|
typedef int (WINAPI *ptuntap32_write) (int,u_char*,u_long);
|
|
typedef int (WINAPI *ptuntap32_beg_write_multi) (int fd, u_long bufsiz); // (WinPCap v4.1+ only)
|
|
typedef int (WINAPI *ptuntap32_end_write_multi) (int fd); // (WinPCap v4.1+ only)
|
|
typedef int (WINAPI *ptuntap32_read) (int,u_char*,u_long);
|
|
typedef int (WINAPI *ptuntap32_close) (int);
|
|
typedef int (WINAPI *ptuntap32_ioctl) (int,int,char*);
|
|
typedef int (WINAPI *ptuntap32_get_stats) (int fd, TT32STATS* stats);
|
|
typedef const char* (WINAPI *ptuntap32_get_default_iface) ();
|
|
typedef void (WINAPI *ptuntap32_build_herc_iface_mac) (u_char* mac, const u_char* ip);
|
|
typedef u_short (WINAPI *ptuntap32_calc_inet_checksum) (u_char*, u_long);
|
|
typedef u_short (WINAPI *ptuntap32_calc_checksum) (u_char*, u_long);
|
|
typedef int (WINAPI *ptuntap32_socketpair) (int domain, int type, int protocol, int socket_vector[2]);
|
|
|
|
// (functions to work around an as-yet unidentified/unresolved 'errno' bug)
|
|
|
|
typedef const char* (WINAPI *ptuntap32_copyright_string_ex) ( int* eno);
|
|
typedef const char* (WINAPI *ptuntap32_version_string_ex) ( int* eno);
|
|
typedef void (WINAPI *ptuntap32_version_numbers_ex) (int* major, int* inter, int* minor, int* build, int* eno);
|
|
typedef int (WINAPI *ptuntap32_set_debug_output_func_ex) (ptr_to_print_debug_string_func pfn, int* eno);
|
|
typedef int (WINAPI *ptuntap32_open_ex) (char* gatewaydev, int flags, int* eno);
|
|
typedef int (WINAPI *ptuntap32_write_ex) (int fd, u_char* buffer, u_long len, int* eno);
|
|
typedef int (WINAPI *ptuntap32_beg_write_multi_ex) (int fd, u_long bufsiz, int* eno); // (WinPCap v4.1+ only)
|
|
typedef int (WINAPI *ptuntap32_end_write_multi_ex) (int fd, int* eno); // (WinPCap v4.1+ only)
|
|
typedef int (WINAPI *ptuntap32_read_ex) (int fd, u_char* buffer, u_long len, int* eno);
|
|
typedef int (WINAPI *ptuntap32_close_ex) (int fd, int* eno);
|
|
typedef int (WINAPI *ptuntap32_ioctl_ex) (int fd, int request, char* argp, int* eno);
|
|
typedef int (WINAPI *ptuntap32_get_stats_ex) (int fd, TT32STATS* stats, int* eno);
|
|
typedef const char* (WINAPI *ptuntap32_get_default_iface_ex) ( int* eno);
|
|
typedef void (WINAPI *ptuntap32_build_herc_iface_mac_ex) (u_char* mac, const u_char* ip, int* eno);
|
|
typedef u_short (WINAPI *ptuntap32_calc_inet_checksum_ex) (u_char*, u_long, int* eno);
|
|
typedef u_short (WINAPI *ptuntap32_calc_checksum_ex) (u_char*, u_long, int* eno);
|
|
typedef int (WINAPI *ptuntap32_socketpair_ex) (int domain, int type, int protocol, int socket_vector[2], int* eno);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _TT32API_H_ */
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|