annotate net.c @ 1637:95880d947257

Fix for VRAM byte write order broke VDP FIFO testing ROM results. This change cleans up VRAM writes and fixes the regression while preserving the correct VRAM byte write order
author Michael Pavone <pavone@retrodev.com>
date Sun, 11 Nov 2018 22:39:29 -0800
parents 4f94e0f90c83
children 78abbabfd58d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1514
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #include <sys/types.h>
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
2 #include <ifaddrs.h>
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
3 #include <netinet/in.h>
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
4 #include "net.h"
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
5
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
6 static uint8_t is_loopback(struct sockaddr_in *addr)
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
7 {
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
8 return (addr->sin_addr.s_addr & 0xFF) == 127;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
9 }
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
10
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
11 static void format_address(uint8_t *dst, struct sockaddr_in *addr)
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
12 {
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
13 long ip = addr->sin_addr.s_addr;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
14 dst[0] = ip;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
15 dst[1] = ip >> 8;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
16 dst[2] = ip >> 16;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
17 dst[3] = ip >> 24;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
18 }
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
19
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
20 uint8_t get_host_address(iface_info *out)
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
21 {
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
22 struct ifaddrs *entries, *current, *localhost;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
23 if (getifaddrs(&entries)) {
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
24 return 0;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
25 }
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
26
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
27 for (current = entries; current; current = current->ifa_next)
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
28 {
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
29 if (current->ifa_addr && current->ifa_addr->sa_family == AF_INET) {
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
30 struct sockaddr_in *addr = (struct sockaddr_in *)current->ifa_addr;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
31 if (is_loopback(addr)) {
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
32 localhost = current;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
33 } else {
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
34 break;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
35 }
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
36 }
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
37 }
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
38 if (!current && localhost) {
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
39 current = localhost;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
40 }
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
41 uint8_t ret = 0;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
42 if (current) {
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
43 ret = 1;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
44 format_address(out->ip, (struct sockaddr_in *)current->ifa_addr);
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
45 format_address(out->net_mask, (struct sockaddr_in *)current->ifa_netmask);
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
46 }
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
47 freeifaddrs(entries);
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
48 return ret;
4f94e0f90c83 Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
49 }