1
0
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:
Mark Pizzolato
2016-05-15 15:25:33 -07:00
parent 60a8a2d43d
commit 5531ccb175
444 changed files with 4119 additions and 3798 deletions

View File

@@ -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;