mirror of
https://github.com/open-simh/simh.git
synced 2026-01-25 19:57:36 +00:00
ALL: Massive 'const' cleanup
These changes facilitate more robust parameter type checking and helps to identify unexpected coding errors. Most simulators can now also be compiled with a C++ compiler without warnings. Additionally, these changes have also been configured to facilitate easier backporting of simulator and device simulation modules to run under the simh v3.9+ SCP framework.
This commit is contained in:
90
sim_ether.c
90
sim_ether.c
@@ -374,7 +374,7 @@
|
||||
/* OS-independant ethernet routines */
|
||||
/*============================================================================*/
|
||||
|
||||
t_stat eth_mac_scan (ETH_MAC* mac, char* strmac)
|
||||
t_stat eth_mac_scan (ETH_MAC* mac, const char* strmac)
|
||||
{
|
||||
unsigned int a0, a1, a2, a3, a4, a5;
|
||||
const ETH_MAC zeros = {0,0,0,0,0,0};
|
||||
@@ -406,9 +406,9 @@ t_stat eth_mac_scan (ETH_MAC* mac, char* strmac)
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
void eth_mac_fmt(ETH_MAC* mac, char* buff)
|
||||
void eth_mac_fmt(const ETH_MAC* mac, char* buff)
|
||||
{
|
||||
uint8* m = (uint8*) mac;
|
||||
const uint8* m = (const uint8*) mac;
|
||||
sprintf(buff, "%02X:%02X:%02X:%02X:%02X:%02X", m[0], m[1], m[2], m[3], m[4], m[5]);
|
||||
return;
|
||||
}
|
||||
@@ -519,16 +519,16 @@ void eth_packet_trace_ex(ETH_DEV* dev, const uint8 *msg, int len, const char* tx
|
||||
if (dev->dptr->dctrl & reason) {
|
||||
char src[20];
|
||||
char dst[20];
|
||||
unsigned short* proto = (unsigned short*) &msg[12];
|
||||
const unsigned short* proto = (const unsigned short*) &msg[12];
|
||||
uint32 crc = eth_crc32(0, msg, len);
|
||||
eth_mac_fmt((ETH_MAC*)&msg[0], dst);
|
||||
eth_mac_fmt((ETH_MAC*)&msg[6], src);
|
||||
eth_mac_fmt((const ETH_MAC*)msg, dst);
|
||||
eth_mac_fmt((const ETH_MAC*)(msg+6), src);
|
||||
sim_debug(reason, dev->dptr, "%s dst: %s src: %s proto: 0x%04X len: %d crc: %X\n",
|
||||
txt, dst, src, ntohs(*proto), len, crc);
|
||||
if (detail) {
|
||||
int i, same, group, sidx, oidx;
|
||||
char outbuf[80], strbuf[18];
|
||||
static char hex[] = "0123456789ABCDEF";
|
||||
static const char hex[] = "0123456789ABCDEF";
|
||||
|
||||
for (i=same=0; i<len; i += 16) {
|
||||
if ((i > 0) && (0 == memcmp(&msg[i], &msg[i-16], 16))) {
|
||||
@@ -570,7 +570,7 @@ void eth_packet_trace_detail(ETH_DEV* dev, const uint8 *msg, int len, const char
|
||||
eth_packet_trace_ex(dev, msg, len, txt, 1 , dev->dbit);
|
||||
}
|
||||
|
||||
char* eth_getname(int number, char* name, char *desc)
|
||||
const char* eth_getname(int number, char* name, char *desc)
|
||||
{
|
||||
ETH_LIST list[ETH_MAX_DEVICE];
|
||||
int count = eth_devices(ETH_MAX_DEVICE, list);
|
||||
@@ -582,7 +582,7 @@ char* eth_getname(int number, char* name, char *desc)
|
||||
return name;
|
||||
}
|
||||
|
||||
char* eth_getname_bydesc(char* desc, char* name, char *ndesc)
|
||||
const char* eth_getname_bydesc(const char* desc, char* name, char *ndesc)
|
||||
{
|
||||
ETH_LIST list[ETH_MAX_DEVICE];
|
||||
int count = eth_devices(ETH_MAX_DEVICE, list);
|
||||
@@ -609,7 +609,7 @@ char* eth_getname_bydesc(char* desc, char* name, char *ndesc)
|
||||
}
|
||||
|
||||
/* strncasecmp() is not available on all platforms */
|
||||
int eth_strncasecmp(char* string1, char* string2, size_t len)
|
||||
int eth_strncasecmp(const char* string1, const char* string2, size_t len)
|
||||
{
|
||||
size_t i;
|
||||
unsigned char s1, s2;
|
||||
@@ -629,7 +629,7 @@ int eth_strncasecmp(char* string1, char* string2, size_t len)
|
||||
return 0;
|
||||
}
|
||||
|
||||
char* eth_getname_byname(char* name, char* temp, char *desc)
|
||||
char* eth_getname_byname(const char* name, char* temp, char *desc)
|
||||
{
|
||||
ETH_LIST list[ETH_MAX_DEVICE];
|
||||
int count = eth_devices(ETH_MAX_DEVICE, list);
|
||||
@@ -702,7 +702,7 @@ for (i=0; i<eth_open_device_count; ++i)
|
||||
}
|
||||
#endif
|
||||
|
||||
t_stat eth_show (FILE* st, UNIT* uptr, int32 val, void* desc)
|
||||
t_stat eth_show (FILE* st, UNIT* uptr, int32 val, CONST void* desc)
|
||||
{
|
||||
ETH_LIST list[ETH_MAX_DEVICE];
|
||||
int number;
|
||||
@@ -743,9 +743,9 @@ t_stat eth_show (FILE* st, UNIT* uptr, int32 val, void* desc)
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
t_stat eth_show_devices (FILE* st, DEVICE *dptr, UNIT* uptr, int32 val, char* desc)
|
||||
t_stat eth_show_devices (FILE* st, DEVICE *dptr, UNIT* uptr, int32 val, CONST char *desc)
|
||||
{
|
||||
return eth_show (st, uptr, val, desc);
|
||||
return eth_show (st, uptr, val, NULL);
|
||||
}
|
||||
|
||||
t_stat ethq_init(ETH_QUE* que, int max)
|
||||
@@ -861,7 +861,7 @@ ethq_insert_data(que, type, pack->oversize ? pack->oversize : pack->msg, pack->u
|
||||
#if !defined (USE_NETWORK) && !defined (USE_SHARED)
|
||||
const char *eth_capabilities(void)
|
||||
{return "no Ethernet";}
|
||||
t_stat eth_open(ETH_DEV* dev, char* name, DEVICE* dptr, uint32 dbit)
|
||||
t_stat eth_open(ETH_DEV* dev, const char* name, DEVICE* dptr, uint32 dbit)
|
||||
{return SCPE_NOFNC;}
|
||||
t_stat eth_close (ETH_DEV* dev)
|
||||
{return SCPE_NOFNC;}
|
||||
@@ -952,7 +952,13 @@ typedef void * pcap_t; /* Pseudo Type to avoid compiler errors */
|
||||
#endif /* HAVE_TAP_NETWORK */
|
||||
|
||||
#ifdef HAVE_VDE_NETWORK
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#include <libvdeplug.h>
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* HAVE_VDE_NETWORK */
|
||||
|
||||
#ifdef HAVE_SLIRP_NETWORK
|
||||
@@ -1277,7 +1283,7 @@ typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA;
|
||||
typedef void **LPADAPTER;
|
||||
#define OID_802_3_CURRENT_ADDRESS 0x01010102 /* Extracted from ntddmdis.h */
|
||||
|
||||
static int pcap_mac_if_win32(char *AdapterName, unsigned char MACAddress[6])
|
||||
static int pcap_mac_if_win32(const char *AdapterName, unsigned char MACAddress[6])
|
||||
{
|
||||
LPADAPTER lpAdapter;
|
||||
PPACKET_OID_DATA OidData;
|
||||
@@ -1289,13 +1295,13 @@ static int pcap_mac_if_win32(char *AdapterName, unsigned char MACAddress[6])
|
||||
static void *hDll = NULL; /* handle to Library */
|
||||
typedef int BOOLEAN;
|
||||
#endif
|
||||
LPADAPTER (*p_PacketOpenAdapter)(char *AdapterName);
|
||||
LPADAPTER (*p_PacketOpenAdapter)(const char *AdapterName);
|
||||
void (*p_PacketCloseAdapter)(LPADAPTER lpAdapter);
|
||||
int (*p_PacketRequest)(LPADAPTER AdapterObject,BOOLEAN Set,PPACKET_OID_DATA OidData);
|
||||
|
||||
#ifdef _WIN32
|
||||
hDll = LoadLibraryA("packet.dll");
|
||||
p_PacketOpenAdapter = (LPADAPTER (*)(char *AdapterName))GetProcAddress(hDll, "PacketOpenAdapter");
|
||||
p_PacketOpenAdapter = (LPADAPTER (*)(const char *AdapterName))GetProcAddress(hDll, "PacketOpenAdapter");
|
||||
p_PacketCloseAdapter = (void (*)(LPADAPTER lpAdapter))GetProcAddress(hDll, "PacketCloseAdapter");
|
||||
p_PacketRequest = (int (*)(LPADAPTER AdapterObject,BOOLEAN Set,PPACKET_OID_DATA OidData))GetProcAddress(hDll, "PacketRequest");
|
||||
#else
|
||||
@@ -1444,7 +1450,7 @@ static int pcap_mac_if_vms(char *AdapterName, unsigned char MACAddress[6])
|
||||
}
|
||||
#endif /* defined (__VMS) && !defined(__VAX) */
|
||||
|
||||
static void eth_get_nic_hw_addr(ETH_DEV* dev, char *devname)
|
||||
static void eth_get_nic_hw_addr(ETH_DEV* dev, const char *devname)
|
||||
{
|
||||
memset(&dev->host_nic_phy_hw_addr, 0, sizeof(dev->host_nic_phy_hw_addr));
|
||||
dev->have_host_nic_phy_addr = 0;
|
||||
@@ -1724,7 +1730,7 @@ static void *
|
||||
_eth_writer(void *arg)
|
||||
{
|
||||
ETH_DEV* volatile dev = (ETH_DEV*)arg;
|
||||
struct write_request *request;
|
||||
ETH_WRITE_REQUEST *request;
|
||||
int sched_policy;
|
||||
struct sched_param sched_priority;
|
||||
|
||||
@@ -1832,7 +1838,7 @@ memset(errbuf, 0, PCAP_ERRBUF_SIZE);
|
||||
if (0 == strncmp("tap:", savname, 4)) {
|
||||
int tun = -1; /* TUN/TAP Socket */
|
||||
int on = 1;
|
||||
char *devname = savname + 4;
|
||||
const char *devname = savname + 4;
|
||||
|
||||
while (isspace(*devname))
|
||||
++devname;
|
||||
@@ -1919,7 +1925,7 @@ else { /* !tap: */
|
||||
if (0 == strncmp("vde:", savname, 4)) {
|
||||
#if defined(HAVE_VDE_NETWORK)
|
||||
struct vde_open_args voa;
|
||||
char *devname = savname + 4;
|
||||
const char *devname = savname + 4;
|
||||
|
||||
memset(&voa, 0, sizeof(voa));
|
||||
if (!strcmp(savname, "vde:vdedevice")) {
|
||||
@@ -1928,7 +1934,7 @@ else { /* !tap: */
|
||||
}
|
||||
while (isspace(*devname))
|
||||
++devname;
|
||||
if (!(*handle = (void*) vde_open(devname, "simh", &voa)))
|
||||
if (!(*handle = (void*) vde_open((char *)devname, (char *)"simh", &voa)))
|
||||
strncpy(errbuf, strerror(errno), PCAP_ERRBUF_SIZE-1);
|
||||
else {
|
||||
*eth_api = ETH_API_VDE;
|
||||
@@ -1941,7 +1947,7 @@ else { /* !tap: */
|
||||
else { /* !vde: */
|
||||
if (0 == strncmp("nat:", savname, 4)) {
|
||||
#if defined(HAVE_SLIRP_NETWORK)
|
||||
char *devname = savname + 4;
|
||||
const char *devname = savname + 4;
|
||||
|
||||
while (isspace(*devname))
|
||||
++devname;
|
||||
@@ -1959,7 +1965,7 @@ else { /* !tap: */
|
||||
if (0 == strncmp("udp:", savname, 4)) {
|
||||
char localport[CBUFSIZE], host[CBUFSIZE], port[CBUFSIZE];
|
||||
char hostport[2*CBUFSIZE];
|
||||
char *devname = savname + 4;
|
||||
const char *devname = savname + 4;
|
||||
|
||||
if (!strcmp(savname, "udp:sourceport:remotehost:remoteport")) {
|
||||
sim_printf ("Eth: Must specify actual udp host and ports(i.e. udp:1224:somehost.com:2234)\r\n");
|
||||
@@ -2067,13 +2073,14 @@ if (bpf_filter && (*eth_api == ETH_API_PCAP)) {
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
t_stat eth_open(ETH_DEV* dev, char* name, DEVICE* dptr, uint32 dbit)
|
||||
t_stat eth_open(ETH_DEV* dev, const char* name, DEVICE* dptr, uint32 dbit)
|
||||
{
|
||||
t_stat r;
|
||||
int bufsz = (BUFSIZ < ETH_MAX_PACKET) ? ETH_MAX_PACKET : BUFSIZ;
|
||||
char errbuf[PCAP_ERRBUF_SIZE];
|
||||
char temp[1024], desc[1024] = "";
|
||||
char* savname = name;
|
||||
const char* savname = name;
|
||||
char namebuf[4*CBUFSIZE];
|
||||
int num;
|
||||
|
||||
if (bufsz < ETH_MAX_JUMBO_FRAME)
|
||||
@@ -2107,7 +2114,10 @@ else {
|
||||
}
|
||||
}
|
||||
|
||||
r = _eth_open_port(savname, &dev->eth_api, &dev->handle, &dev->fd_handle, errbuf, NULL, (void *)dev, dptr, dbit);
|
||||
namebuf[sizeof(namebuf)-1] = '\0';
|
||||
strncpy (namebuf, savname, sizeof(namebuf)-1);
|
||||
savname = namebuf;
|
||||
r = _eth_open_port(namebuf, &dev->eth_api, &dev->handle, &dev->fd_handle, errbuf, NULL, (void *)dev, dptr, dbit);
|
||||
|
||||
if (errbuf[0]) {
|
||||
sim_printf ("Eth: open error - %s\r\n", errbuf);
|
||||
@@ -2215,7 +2225,7 @@ pthread_mutex_destroy (&dev->self_lock);
|
||||
pthread_mutex_destroy (&dev->writer_lock);
|
||||
pthread_cond_destroy (&dev->writer_cond);
|
||||
if (1) {
|
||||
struct write_request *buffer;
|
||||
ETH_WRITE_REQUEST *buffer;
|
||||
while (NULL != (buffer = dev->write_buffers)) {
|
||||
dev->write_buffers = buffer->next;
|
||||
free(buffer);
|
||||
@@ -2369,7 +2379,7 @@ eth_filter(dev, 1, (ETH_MAC *)mac, 0, 0);
|
||||
/* send the packet */
|
||||
status = _eth_write (dev, &send, NULL);
|
||||
if (status != SCPE_OK) {
|
||||
char *msg;
|
||||
const char *msg;
|
||||
msg = (dev->eth_api == ETH_API_PCAP) ?
|
||||
"Eth: Error Transmitting packet: %s\r\n"
|
||||
"You may need to run as root, or install a libpcap version\r\n"
|
||||
@@ -2607,7 +2617,7 @@ return ((status == 0) ? SCPE_OK : SCPE_IOERR);
|
||||
t_stat eth_write(ETH_DEV* dev, ETH_PACK* packet, ETH_PCALLBACK routine)
|
||||
{
|
||||
#ifdef USE_READER_THREAD
|
||||
struct write_request *request;
|
||||
ETH_WRITE_REQUEST *request;
|
||||
int write_queue_size = 1;
|
||||
|
||||
/* make sure device exists */
|
||||
@@ -2619,7 +2629,7 @@ if (NULL != (request = dev->write_buffers))
|
||||
dev->write_buffers = request->next;
|
||||
pthread_mutex_unlock (&dev->writer_lock);
|
||||
if (NULL == request)
|
||||
request = (struct write_request *)malloc(sizeof(*request));
|
||||
request = (ETH_WRITE_REQUEST *)malloc(sizeof(*request));
|
||||
|
||||
/* Copy buffer contents */
|
||||
request->packet.len = packet->len;
|
||||
@@ -2633,7 +2643,7 @@ memcpy(request->packet.msg, packet->msg, packet->len);
|
||||
pthread_mutex_lock (&dev->writer_lock);
|
||||
request->next = NULL;
|
||||
if (dev->write_requests) {
|
||||
struct write_request *last_request = dev->write_requests;
|
||||
ETH_WRITE_REQUEST *last_request = dev->write_requests;
|
||||
|
||||
++write_queue_size;
|
||||
while (last_request->next) {
|
||||
@@ -2844,9 +2854,9 @@ return (uint16)(~sum);
|
||||
}
|
||||
|
||||
static void
|
||||
_eth_fix_ip_jumbo_offload(ETH_DEV* dev, const u_char* msg, int len)
|
||||
_eth_fix_ip_jumbo_offload(ETH_DEV* dev, u_char* msg, int len)
|
||||
{
|
||||
unsigned short* proto = (unsigned short*) &msg[12];
|
||||
const unsigned short* proto = (const unsigned short*) &msg[12];
|
||||
struct IPHeader *IP;
|
||||
struct TCPHeader *TCP = NULL;
|
||||
struct UDPHeader *UDP;
|
||||
@@ -3035,7 +3045,7 @@ switch (IP->proto) {
|
||||
static void
|
||||
_eth_fix_ip_xsum_offload(ETH_DEV* dev, const u_char* msg, int len)
|
||||
{
|
||||
unsigned short* proto = (unsigned short*) &msg[12];
|
||||
const unsigned short* proto = (const unsigned short*) &msg[12];
|
||||
struct IPHeader *IP;
|
||||
struct TCPHeader *TCP;
|
||||
struct UDPHeader *UDP;
|
||||
@@ -3235,8 +3245,12 @@ if ((LOOPBACK_SELF_FRAME(dev->physical_addr, data)) ||
|
||||
|
||||
if (bpf_used ? to_me : (to_me && !from_me)) {
|
||||
if (header->len > ETH_MIN_JUMBO_FRAME) {
|
||||
if (header->len <= header->caplen) /* Whole Frame captured? */
|
||||
_eth_fix_ip_jumbo_offload(dev, data, header->len);
|
||||
if (header->len <= header->caplen) {/* Whole Frame captured? */
|
||||
u_char *datacopy = (u_char *)malloc(header->len);
|
||||
memcpy(datacopy, data, header->len);
|
||||
_eth_fix_ip_jumbo_offload(dev, datacopy, header->len);
|
||||
free(datacopy);
|
||||
}
|
||||
else
|
||||
++dev->jumbo_truncated;
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user