diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2024-02-24 10:26:09 +0100 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2024-02-26 00:06:22 +0100 |
commit | 94687d17ba79cdb9fd01c87b2b40b63512471569 (patch) | |
tree | db4abf352a61c392db2c4c512dc9a8c061541f22 /libphobos/libdruntime | |
parent | 3f58f96a4e8255e222953f9856bcd6c25f7b33cd (diff) | |
download | gcc-94687d17ba79cdb9fd01c87b2b40b63512471569.zip gcc-94687d17ba79cdb9fd01c87b2b40b63512471569.tar.gz gcc-94687d17ba79cdb9fd01c87b2b40b63512471569.tar.bz2 |
Merge dmd, druntime ceff48bf7d, phobos dcbfbd43a
D front-end changes:
- Import latest fixes from dmd v2.107.1-rc.1.
D runtime changes:
- Import latest fixes from druntime v2.107.1-rc.1.
Phobos changes:
- Import latest fixes from phobos v2.107.1-rc.1.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd ceff48bf7d.
libphobos/ChangeLog:
* libdruntime/MERGE: Merge upstream druntime ceff48bf7d.
* libdruntime/Makefile.am (DRUNTIME_DSOURCES_FREEBSD): Add
core/sys/freebsd/net/if_.d.
* libdruntime/Makefile.in: Regenerate.
* src/MERGE: Merge upstream phobos dcbfbd43a.
Diffstat (limited to 'libphobos/libdruntime')
-rw-r--r-- | libphobos/libdruntime/MERGE | 2 | ||||
-rw-r--r-- | libphobos/libdruntime/Makefile.am | 22 | ||||
-rw-r--r-- | libphobos/libdruntime/Makefile.in | 31 | ||||
-rw-r--r-- | libphobos/libdruntime/core/sys/freebsd/ifaddrs.d | 3 | ||||
-rw-r--r-- | libphobos/libdruntime/core/sys/freebsd/net/if_.d | 493 | ||||
-rw-r--r-- | libphobos/libdruntime/core/sys/linux/sys/socket.d | 1 | ||||
-rw-r--r-- | libphobos/libdruntime/core/thread/fiber.d | 2 |
7 files changed, 524 insertions, 30 deletions
diff --git a/libphobos/libdruntime/MERGE b/libphobos/libdruntime/MERGE index 021149a..f11c5fb 100644 --- a/libphobos/libdruntime/MERGE +++ b/libphobos/libdruntime/MERGE @@ -1,4 +1,4 @@ -9471b25db9ed44d71e0e27956430c0c6a09c16db +ceff48bf7db05503117f54fdc0cefcb89b711136 The first line of this file holds the git revision number of the last merge done from the dlang/dmd repository. diff --git a/libphobos/libdruntime/Makefile.am b/libphobos/libdruntime/Makefile.am index d2fb6e2..f17d8be 100644 --- a/libphobos/libdruntime/Makefile.am +++ b/libphobos/libdruntime/Makefile.am @@ -266,17 +266,17 @@ DRUNTIME_DSOURCES_ELF = core/sys/elf/package.d DRUNTIME_DSOURCES_FREEBSD = core/sys/freebsd/config.d \ core/sys/freebsd/dlfcn.d core/sys/freebsd/err.d \ core/sys/freebsd/execinfo.d core/sys/freebsd/ifaddrs.d \ - core/sys/freebsd/net/if_dl.d core/sys/freebsd/netinet/in_.d \ - core/sys/freebsd/pthread_np.d core/sys/freebsd/stdlib.d \ - core/sys/freebsd/string.d core/sys/freebsd/sys/_bitset.d \ - core/sys/freebsd/sys/_cpuset.d core/sys/freebsd/sys/cdefs.d \ - core/sys/freebsd/sys/elf.d core/sys/freebsd/sys/elf32.d \ - core/sys/freebsd/sys/elf64.d core/sys/freebsd/sys/elf_common.d \ - core/sys/freebsd/sys/event.d core/sys/freebsd/sys/link_elf.d \ - core/sys/freebsd/sys/mman.d core/sys/freebsd/sys/mount.d \ - core/sys/freebsd/sys/socket.d core/sys/freebsd/sys/sysctl.d \ - core/sys/freebsd/sys/types.d core/sys/freebsd/time.d \ - core/sys/freebsd/unistd.d + core/sys/freebsd/net/if_.d core/sys/freebsd/net/if_dl.d \ + core/sys/freebsd/netinet/in_.d core/sys/freebsd/pthread_np.d \ + core/sys/freebsd/stdlib.d core/sys/freebsd/string.d \ + core/sys/freebsd/sys/_bitset.d core/sys/freebsd/sys/_cpuset.d \ + core/sys/freebsd/sys/cdefs.d core/sys/freebsd/sys/elf.d \ + core/sys/freebsd/sys/elf32.d core/sys/freebsd/sys/elf64.d \ + core/sys/freebsd/sys/elf_common.d core/sys/freebsd/sys/event.d \ + core/sys/freebsd/sys/link_elf.d core/sys/freebsd/sys/mman.d \ + core/sys/freebsd/sys/mount.d core/sys/freebsd/sys/socket.d \ + core/sys/freebsd/sys/sysctl.d core/sys/freebsd/sys/types.d \ + core/sys/freebsd/time.d core/sys/freebsd/unistd.d DRUNTIME_DSOURCES_LINUX = core/sys/linux/config.d \ core/sys/linux/dlfcn.d core/sys/linux/elf.d core/sys/linux/epoll.d \ diff --git a/libphobos/libdruntime/Makefile.in b/libphobos/libdruntime/Makefile.in index 3e3ab56..b6d9036 100644 --- a/libphobos/libdruntime/Makefile.in +++ b/libphobos/libdruntime/Makefile.in @@ -329,10 +329,10 @@ am__objects_11 = core/sys/bionic/err.lo core/sys/bionic/fcntl.lo \ @DRUNTIME_OS_ANDROID_TRUE@am__objects_12 = $(am__objects_11) am__objects_13 = core/sys/freebsd/config.lo core/sys/freebsd/dlfcn.lo \ core/sys/freebsd/err.lo core/sys/freebsd/execinfo.lo \ - core/sys/freebsd/ifaddrs.lo core/sys/freebsd/net/if_dl.lo \ - core/sys/freebsd/netinet/in_.lo core/sys/freebsd/pthread_np.lo \ - core/sys/freebsd/stdlib.lo core/sys/freebsd/string.lo \ - core/sys/freebsd/sys/_bitset.lo \ + core/sys/freebsd/ifaddrs.lo core/sys/freebsd/net/if_.lo \ + core/sys/freebsd/net/if_dl.lo core/sys/freebsd/netinet/in_.lo \ + core/sys/freebsd/pthread_np.lo core/sys/freebsd/stdlib.lo \ + core/sys/freebsd/string.lo core/sys/freebsd/sys/_bitset.lo \ core/sys/freebsd/sys/_cpuset.lo core/sys/freebsd/sys/cdefs.lo \ core/sys/freebsd/sys/elf.lo core/sys/freebsd/sys/elf32.lo \ core/sys/freebsd/sys/elf64.lo \ @@ -943,17 +943,17 @@ DRUNTIME_DSOURCES_ELF = core/sys/elf/package.d DRUNTIME_DSOURCES_FREEBSD = core/sys/freebsd/config.d \ core/sys/freebsd/dlfcn.d core/sys/freebsd/err.d \ core/sys/freebsd/execinfo.d core/sys/freebsd/ifaddrs.d \ - core/sys/freebsd/net/if_dl.d core/sys/freebsd/netinet/in_.d \ - core/sys/freebsd/pthread_np.d core/sys/freebsd/stdlib.d \ - core/sys/freebsd/string.d core/sys/freebsd/sys/_bitset.d \ - core/sys/freebsd/sys/_cpuset.d core/sys/freebsd/sys/cdefs.d \ - core/sys/freebsd/sys/elf.d core/sys/freebsd/sys/elf32.d \ - core/sys/freebsd/sys/elf64.d core/sys/freebsd/sys/elf_common.d \ - core/sys/freebsd/sys/event.d core/sys/freebsd/sys/link_elf.d \ - core/sys/freebsd/sys/mman.d core/sys/freebsd/sys/mount.d \ - core/sys/freebsd/sys/socket.d core/sys/freebsd/sys/sysctl.d \ - core/sys/freebsd/sys/types.d core/sys/freebsd/time.d \ - core/sys/freebsd/unistd.d + core/sys/freebsd/net/if_.d core/sys/freebsd/net/if_dl.d \ + core/sys/freebsd/netinet/in_.d core/sys/freebsd/pthread_np.d \ + core/sys/freebsd/stdlib.d core/sys/freebsd/string.d \ + core/sys/freebsd/sys/_bitset.d core/sys/freebsd/sys/_cpuset.d \ + core/sys/freebsd/sys/cdefs.d core/sys/freebsd/sys/elf.d \ + core/sys/freebsd/sys/elf32.d core/sys/freebsd/sys/elf64.d \ + core/sys/freebsd/sys/elf_common.d core/sys/freebsd/sys/event.d \ + core/sys/freebsd/sys/link_elf.d core/sys/freebsd/sys/mman.d \ + core/sys/freebsd/sys/mount.d core/sys/freebsd/sys/socket.d \ + core/sys/freebsd/sys/sysctl.d core/sys/freebsd/sys/types.d \ + core/sys/freebsd/time.d core/sys/freebsd/unistd.d DRUNTIME_DSOURCES_LINUX = core/sys/linux/config.d \ core/sys/linux/dlfcn.d core/sys/linux/elf.d core/sys/linux/epoll.d \ @@ -1613,6 +1613,7 @@ core/sys/freebsd/ifaddrs.lo: core/sys/freebsd/$(am__dirstamp) core/sys/freebsd/net/$(am__dirstamp): @$(MKDIR_P) core/sys/freebsd/net @: > core/sys/freebsd/net/$(am__dirstamp) +core/sys/freebsd/net/if_.lo: core/sys/freebsd/net/$(am__dirstamp) core/sys/freebsd/net/if_dl.lo: core/sys/freebsd/net/$(am__dirstamp) core/sys/freebsd/netinet/$(am__dirstamp): @$(MKDIR_P) core/sys/freebsd/netinet diff --git a/libphobos/libdruntime/core/sys/freebsd/ifaddrs.d b/libphobos/libdruntime/core/sys/freebsd/ifaddrs.d index aa39ac4..a08b8ed 100644 --- a/libphobos/libdruntime/core/sys/freebsd/ifaddrs.d +++ b/libphobos/libdruntime/core/sys/freebsd/ifaddrs.d @@ -3,7 +3,7 @@ /++ D header file for FreeBSD's ifaddrs.h. - Copyright: Copyright 2023 + Copyright: Copyright 2023 - 2024 License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). Authors: $(HTTP jmdavisprog.com, Jonathan M Davis) +/ @@ -23,6 +23,7 @@ struct ifaddrs uint ifa_flags; sockaddr* ifa_addr; sockaddr* ifa_netmask; + alias ifa_broadaddr = ifa_dstaddr; sockaddr* ifa_dstaddr; void* ifa_data; } diff --git a/libphobos/libdruntime/core/sys/freebsd/net/if_.d b/libphobos/libdruntime/core/sys/freebsd/net/if_.d new file mode 100644 index 0000000..e050f1b --- /dev/null +++ b/libphobos/libdruntime/core/sys/freebsd/net/if_.d @@ -0,0 +1,493 @@ +//Written in the D programming language + +/++ + D header file for FreeBSD's net/if.h. + + Copyright: Copyright 2024 + License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + Authors: $(HTTP jmdavisprog.com, Jonathan M Davis) + +/ +module core.sys.freebsd.net.if_; + +public import core.sys.posix.net.if_; + +version (FreeBSD): +extern(C): +@nogc: +nothrow: + +import core.stdc.config; +import core.sys.freebsd.sys.types : caddr_t; +import core.sys.posix.sys.socket : sockaddr; +import core.sys.posix.sys.time : time_t, timeval; + +enum IF_MAXUNIT = 0x7fff; + +struct if_clonereq +{ + int ifcr_total; + int ifcr_count; + ubyte* ifcr_buffer; +} + +struct if_data +{ + ubyte ifi_type; + ubyte ifi_physical; + ubyte ifi_addrlen; + ubyte ifi_hdrlen; + ubyte ifi_link_state; + ubyte ifi_vhid; + ushort ifi_datalen; + uint ifi_mtu; + uint ifi_metric; + ulong ifi_baudrate; + + ulong ifi_ipackets; + ulong ifi_ierrors; + ulong ifi_opackets; + ulong ifi_oerrors; + ulong ifi_collisions; + ulong ifi_ibytes; + ulong ifi_obytes; + ulong ifi_imcasts; + ulong ifi_omcasts; + ulong ifi_iqdrops; + ulong ifi_oqdrops; + ulong ifi_noproto; + ulong ifi_hwassist; + + union + { + time_t ifi_epoch; + private ulong ph; + } + + union + { + timeval ifi_lastchange; + struct + { + private ulong ph1; + private ulong ph2; + } + } +} + +enum IFF_UP = 0x1; +enum IFF_BROADCAST = 0x2; +enum IFF_DEBUG = 0x4; +enum IFF_LOOPBACK = 0x8; +enum IFF_POINTOPOINT = 0x10; +enum IFF_NEEDSEPOCH = 0x20; +enum IFF_DRV_RUNNING = 0x40; +enum IFF_NOARP = 0x80; +enum IFF_PROMISC = 0x100; +enum IFF_ALLMULTI = 0x200; +enum IFF_DRV_OACTIVE = 0x400; +enum IFF_SIMPLEX = 0x800; +enum IFF_LINK0 = 0x1000; +enum IFF_LINK1 = 0x2000; +enum IFF_LINK2 = 0x4000; +enum IFF_ALTPHYS = IFF_LINK2; +enum IFF_MULTICAST = 0x8000; +enum IFF_CANTCONFIG = 0x10000; +enum IFF_PPROMISC = 0x20000; +enum IFF_MONITOR = 0x40000; +enum IFF_STATICARP = 0x80000; +enum IFF_STICKYARP = 0x100000; +enum IFF_DYING = 0x200000; +enum IFF_RENAMING = 0x400000; +enum IFF_SPARE = 0x800000; +enum IFF_NETLINK_1 = 0x1000000; + +enum IFF_RUNNING = IFF_DRV_RUNNING; +enum IFF_OACTIVE = IFF_DRV_OACTIVE; + +enum IFF_CANTCHANGE = IFF_BROADCAST | + IFF_POINTOPOINT | + IFF_DRV_RUNNING | + IFF_DRV_OACTIVE | + IFF_SIMPLEX | + IFF_MULTICAST | + IFF_ALLMULTI | + IFF_PROMISC | + IFF_DYING | + IFF_CANTCONFIG | + IFF_NEEDSEPOCH; + +enum LINK_STATE_UNKNOWN = 0; +enum LINK_STATE_DOWN = 1; +enum LINK_STATE_UP = 2; + +auto IF_Kbps(T)(T x) { return uintmax_t(x) * 1000; } +auto IF_Mbps(T)(T x) { return IF_Kbps(x * 1000); } +auto IF_Gbps(T)(T x) { return IF_Mbps(x * 1000); } + +enum IFCAP_B_RXCSUM = 0; +enum IFCAP_B_TXCSUM = 1; +enum IFCAP_B_NETCONS = 2; +enum IFCAP_B_VLAN_MTU = 3; +enum IFCAP_B_VLAN_HWTAGGING = 4; +enum IFCAP_B_JUMBO_MTU = 5; +enum IFCAP_B_POLLING = 6; +enum IFCAP_B_VLAN_HWCSUM = 7; +enum IFCAP_B_TSO4 = 8; +enum IFCAP_B_TSO6 = 9; +enum IFCAP_B_LRO = 10; +enum IFCAP_B_WOL_UCAST = 11; +enum IFCAP_B_WOL_MCAST = 12; +enum IFCAP_B_WOL_MAGIC = 13; +enum IFCAP_B_TOE4 = 14; +enum IFCAP_B_TOE6 = 15; +enum IFCAP_B_VLAN_HWFILTER = 16; +enum IFCAP_B_NV = 17; +enum IFCAP_B_VLAN_HWTSO = 18; +enum IFCAP_B_LINKSTATE = 19; +enum IFCAP_B_NETMAP = 20; +enum IFCAP_B_RXCSUM_IPV6 = 21; +enum IFCAP_B_TXCSUM_IPV6 = 22; +enum IFCAP_B_HWSTATS = 23; +enum IFCAP_B_TXRTLMT = 24; +enum IFCAP_B_HWRXTSTMP = 25; +enum IFCAP_B_MEXTPG = 26; +enum IFCAP_B_TXTLS4 = 27; +enum IFCAP_B_TXTLS6 = 28; +enum IFCAP_B_VXLAN_HWCSUM = 29; +enum IFCAP_B_VXLAN_HWTSO = 30; +enum IFCAP_B_TXTLS_RTLMT = 31; +enum IFCAP_B_RXTLS4 = 32; +enum IFCAP_B_RXTLS6 = 33; +enum __IFCAP_B_SIZE = 34; + +// IFCAP_B_MAX is defined in net/if.h, but __IFCAP_B_MAX doesn't seem to be defined anywhere. +// enum IFCAP_B_MAX = __IFCAP_B_MAX - 1; +enum IFCAP_B_SIZE = __IFCAP_B_SIZE; + +auto IFCAP_BIT(T)(T x) { return 1 << x; } + +enum IFCAP_RXCSUM = IFCAP_BIT(IFCAP_B_RXCSUM); +enum IFCAP_TXCSUM = IFCAP_BIT(IFCAP_B_TXCSUM); +enum IFCAP_NETCONS = IFCAP_BIT(IFCAP_B_NETCONS); +enum IFCAP_VLAN_MTU = IFCAP_BIT(IFCAP_B_VLAN_MTU); +enum IFCAP_VLAN_HWTAGGING = IFCAP_BIT(IFCAP_B_VLAN_HWTAGGING); +enum IFCAP_JUMBO_MTU = IFCAP_BIT(IFCAP_B_JUMBO_MTU); +enum IFCAP_POLLING = IFCAP_BIT(IFCAP_B_POLLING); +enum IFCAP_VLAN_HWCSUM = IFCAP_BIT(IFCAP_B_VLAN_HWCSUM); +enum IFCAP_TSO4 = IFCAP_BIT(IFCAP_B_TSO4); +enum IFCAP_TSO6 = IFCAP_BIT(IFCAP_B_TSO6); +enum IFCAP_LRO = IFCAP_BIT(IFCAP_B_LRO); +enum IFCAP_WOL_UCAST = IFCAP_BIT(IFCAP_B_WOL_UCAST); +enum IFCAP_WOL_MCAST = IFCAP_BIT(IFCAP_B_WOL_MCAST); +enum IFCAP_WOL_MAGIC = IFCAP_BIT(IFCAP_B_WOL_MAGIC); +enum IFCAP_TOE4 = IFCAP_BIT(IFCAP_B_TOE4); +enum IFCAP_TOE6 = IFCAP_BIT(IFCAP_B_TOE6); +enum IFCAP_VLAN_HWFILTER = IFCAP_BIT(IFCAP_B_VLAN_HWFILTER); +enum IFCAP_NV = IFCAP_BIT(IFCAP_B_NV); +enum IFCAP_VLAN_HWTSO = IFCAP_BIT(IFCAP_B_VLAN_HWTSO); +enum IFCAP_LINKSTATE = IFCAP_BIT(IFCAP_B_LINKSTATE); +enum IFCAP_NETMAP = IFCAP_BIT(IFCAP_B_NETMAP); +enum IFCAP_RXCSUM_IPV6 = IFCAP_BIT(IFCAP_B_RXCSUM_IPV6); +enum IFCAP_TXCSUM_IPV6 = IFCAP_BIT(IFCAP_B_TXCSUM_IPV6); +enum IFCAP_HWSTATS = IFCAP_BIT(IFCAP_B_HWSTATS); +enum IFCAP_TXRTLMT = IFCAP_BIT(IFCAP_B_TXRTLMT); +enum IFCAP_HWRXTSTMP = IFCAP_BIT(IFCAP_B_HWRXTSTMP); +enum IFCAP_MEXTPG = IFCAP_BIT(IFCAP_B_MEXTPG); +enum IFCAP_TXTLS4 = IFCAP_BIT(IFCAP_B_TXTLS4); +enum IFCAP_TXTLS6 = IFCAP_BIT(IFCAP_B_TXTLS6); +enum IFCAP_VXLAN_HWCSUM = IFCAP_BIT(IFCAP_B_VXLAN_HWCSUM); +enum IFCAP_VXLAN_HWTSO = IFCAP_BIT(IFCAP_B_VXLAN_HWTSO); +enum IFCAP_TXTLS_RTLMT = IFCAP_BIT(IFCAP_B_TXTLS_RTLMT); + +enum IFCAP2_RXTLS4 = IFCAP_B_RXTLS4 - 32; +enum IFCAP2_RXTLS6 = IFCAP_B_RXTLS6 - 32; + +auto IFCAP2_BIT(T)(T x) { return 1UL << x; } + +enum IFCAP_HWCSUM_IPV6 = IFCAP_RXCSUM_IPV6 | IFCAP_TXCSUM_IPV6; + +enum IFCAP_HWCSUM = IFCAP_RXCSUM | IFCAP_TXCSUM; +enum IFCAP_TSO = IFCAP_TSO4 | IFCAP_TSO6; +enum IFCAP_WOL = IFCAP_WOL_UCAST | IFCAP_WOL_MCAST | IFCAP_WOL_MAGIC; +enum IFCAP_TOE = IFCAP_TOE4 | IFCAP_TOE6; +enum IFCAP_TXTLS = IFCAP_TXTLS4 | IFCAP_TXTLS6; + +enum IFCAP_CANTCHANGE = IFCAP_NETMAP | IFCAP_NV; +enum IFCAP_ALLCAPS = 0xffffffff; + +enum IFQ_MAXLEN = 50; +enum IFNET_SLOWHZ = 1; + +struct if_msghdr +{ + ushort ifm_msglen; + ubyte ifm_version; + ubyte ifm_type; + int ifm_addrs; + int ifm_flags; + ushort ifm_index; + ushort _ifm_spare1; + if_data ifm_data; +} + +auto IF_MSGHDRL_IFM_DATA(T)(T _l) { return cast(if_data*) (cast(ubyte*) _l + _l.ifm_data_off); } + +auto IF_MSGHDRL_RTA(T)(T_l) { return cast(void*) (cast(uintptr_t) _l + _l.ifm_len); } + +struct if_msghdrl +{ + ushort ifm_msglen; + ubyte ifm_version; + ubyte ifm_type; + int ifm_addrs; + int ifm_flags; + ushort ifm_index; + ushort _ifm_spare1; + ushort ifm_len; + ushort ifm_data_off; + int _ifm_spare2; + if_data ifm_data; +} + +struct ifa_msghdr +{ + ushort ifam_msglen; + ubyte ifam_version; + ubyte ifam_type; + int ifam_addrs; + int ifam_flags; + ushort ifam_index; + ushort _ifam_spare1; + int ifam_metric; +} + +auto IFA_MSGHDRL_IFAM_DATA(T)(T _l) { return cast(if_data*) (cast(ubyte*) _l + _l.ifam_data_off); } + +auto IFA_MSGHDRL_RTA(T)(T _l) { return cast(void*) (cast(uintptr_t) _l + _l.ifam_len); } + +struct ifa_msghdrl +{ + ushort ifam_msglen; + ubyte ifam_version; + ubyte ifam_type; + int ifam_addrs; + int ifam_flags; + ushort ifam_index; + ushort _ifam_spare1; + ushort ifam_len; + ushort ifam_data_off; + int ifam_metric; + if_data ifam_data; +} + +struct ifma_msghdr +{ + ushort ifmam_msglen; + ubyte ifmam_version; + ubyte ifmam_type; + int ifmam_addrs; + int ifmam_flags; + ushort ifmam_index; + ushort _ifmam_spare1; +} + +struct if_announcemsghdr +{ + ushort ifan_msglen; + ubyte ifan_version; + ubyte ifan_type; + ushort ifan_index; + char[IF_NAMESIZE] ifan_name; + ushort ifan_what; +} + +enum IFAN_ARRIVAL = 0; +enum IFAN_DEPARTURE = 1; + +struct ifreq_buffer +{ + size_t length; + void* buffer; +} + +struct ifreq_nv_req +{ + uint buf_length; + uint length; + void* buffer; +} + +enum IFR_CAP_NV_MAXBUFSIZE = 2 * 1024 * 1024; + +struct ifreq +{ + char[IF_NAMESIZE] ifr_name; + + union + { + sockaddr ifr_addr; + sockaddr ifr_dstaddr; + sockaddr ifr_broadaddr; + ifreq_buffer ifr_buffer; + private short[2] ifru_flags; + short ifr_index; + int ifr_jid; + int ifr_metric; + int ifr_mtu; + int ifr_phys; + int ifr_media; + caddr_t ifr_data; + private int[2] ifru_cap; + uint ifr_fib; + ubyte ifr_vlan_pcp; + ifreq_nv_req ifr_cap_nv; + } + + @property ref ifr_flags() { return ifru_flags[0]; } + @property ref ifr_flagshigh() { return ifru_flags[1]; } + @property ref ifr_reqcap() { return ifru_cap[0]; } + @property ref ifr_curcap() { return ifru_cap[1]; } + alias ifr_lan_pcp = ifr_vlan_pcp; +} + +auto _SIZEOF_ADDR_IFREQ(T)(T ifr) { return ifr.ifr_addr.sa_len > sockaddr.sizeof ? + ifreq.sizeof - sockaddr.sizeof + ifr.ifr_addr.sa_len : + ifreq.sizeof; } + +struct ifaliasreq +{ + char[IF_NAMESIZE] ifra_name; + sockaddr ifra_addr; + sockaddr ifra_broadaddr; + sockaddr ifra_mask; + int ifra_vhid; +} + +struct oifaliasreq +{ + char[IF_NAMESIZE] ifra_name; + sockaddr ifra_addr; + sockaddr ifra_broadaddr; + sockaddr ifra_mask; + } + +struct ifmediareq +{ + char[IF_NAMESIZE] ifm_name; + int ifm_current; + int ifm_mask; + int ifm_status; + int ifm_active; + int ifm_count; + int* ifm_ulist; +} + +struct ifdrv +{ + char[IF_NAMESIZE] ifd_name; + c_ulong ifd_cmd; + size_t ifd_len; + void* ifd_data; +} + +enum IFSTATMAX = 800; +struct ifstat +{ + char[IF_NAMESIZE] ifs_name; + char[IFSTATMAX + 1] ascii; +} + +struct ifconf +{ + int ifc_len; + union + { + caddr_t ifc_buf; + ifreq* ifc_req; + } +} + +enum IFG_ALL = "all"; +enum IFG_EGRESS = "egress"; + +struct ifg_req +{ + union + { + char[IF_NAMESIZE] ifgrq_group; + char[IF_NAMESIZE] ifgrq_member; + } +} + +struct ifgroupreq +{ + char[IF_NAMESIZE] ifgr_name; + uint ifgr_len; + union + { + char[IF_NAMESIZE] ifgr_group; + ifg_req* ifgr_groups; + } +} + +struct ifi2creq +{ + ubyte dev_addr; + ubyte offset; + ubyte len; + ubyte spare0; + uint spare1; + ubyte[8] data; +} + +enum RSS_FUNC_NONE = 0; +enum RSS_FUNC_PRIVATE = 1; +enum RSS_FUNC_TOEPLITZ = 2; + +enum RSS_TYPE_IPV4 = 0x00000001; +enum RSS_TYPE_TCP_IPV4 = 0x00000002; +enum RSS_TYPE_IPV6 = 0x00000004; +enum RSS_TYPE_IPV6_EX = 0x00000008; +enum RSS_TYPE_TCP_IPV6 = 0x00000010; +enum RSS_TYPE_TCP_IPV6_EX = 0x00000020; +enum RSS_TYPE_UDP_IPV4 = 0x00000040; +enum RSS_TYPE_UDP_IPV6 = 0x00000080; +enum RSS_TYPE_UDP_IPV6_EX = 0x00000100; + +enum RSS_KEYLEN = 128; + +struct ifrsskey +{ + char[IF_NAMESIZE] ifrk_name; + ubyte ifrk_func; + ubyte ifrk_spare0; + ushort ifrk_keylen; + ubyte[RSS_KEYLEN] ifrk_key; +} + +struct ifrsshash +{ + char[IF_NAMESIZE] ifrh_name; + ubyte ifrh_func; + ubyte ifrh_spare0; + ushort ifrh_spare1; + uint ifrh_types; +} + +enum IFNET_PCP_NONE = 0xff; + +enum IFDR_MSG_SIZE = 64; +enum IFDR_REASON_MSG = 1; +enum IFDR_REASON_VENDOR = 2; + +struct ifdownreason +{ + char[IF_NAMESIZE] ifdr_name; + uint ifdr_reason; + uint ifdr_vendor; + char[IFDR_MSG_SIZE] ifdr_msg; +} + +// FIXME It's not clear where ifnet is supposed to be coming from, so this is +// commented out for now. +//alias if_t = ifnet*; diff --git a/libphobos/libdruntime/core/sys/linux/sys/socket.d b/libphobos/libdruntime/core/sys/linux/sys/socket.d index 339a602..dc274e4 100644 --- a/libphobos/libdruntime/core/sys/linux/sys/socket.d +++ b/libphobos/libdruntime/core/sys/linux/sys/socket.d @@ -71,7 +71,6 @@ enum AF_BRIDGE = PF_BRIDGE, AF_ATMPVC = PF_ATMPVC, AF_X25 = PF_X25, - AF_INET6 = PF_INET6, AF_ROSE = PF_ROSE, AF_DECnet = PF_DECnet, AF_NETBEUI = PF_NETBEUI, diff --git a/libphobos/libdruntime/core/thread/fiber.d b/libphobos/libdruntime/core/thread/fiber.d index dd2462f..48b6f9e 100644 --- a/libphobos/libdruntime/core/thread/fiber.d +++ b/libphobos/libdruntime/core/thread/fiber.d @@ -1393,7 +1393,7 @@ private: // At present, it is not safe to migrate fibers between threads, but if that // changes, then updating the value of R13 will also need to be handled. version (PPC64) - *cast(size_t*)(pstack + wsize) = cast(size_t) Thread.getThis().m_addr; + *cast(size_t*)(pstack + wsize) = cast(size_t) ThreadBase.getThis().m_addr; assert( (cast(size_t) pstack & 0x0f) == 0 ); } else version (AsmMIPS_O32_Posix) |