File: ifaddrs.d

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (77 lines) | stat: -rw-r--r-- 2,066 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*******************************************************************************

    Binding for Mac OSX's <ifaddr.h>, expose network interface addresses

    The following functions are present as of Mac OSX 10.15:
    - getifaddrs(3):   get interface addresses
    - freeifaddrs(3):  deallocates the return value of `getifaddrs`
    - getifmaddrs(3):  get multicast group membership
    - freeifmaddrs(3): deallocates the return value of `getifmaddrs`

    Copyright:  Copyright © 2020, The D Language Foundation
    License:    $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
    Authors:    Daniel Graczer

*******************************************************************************/

module core.sys.darwin.ifaddrs;

version (OSX)
    version = Darwin;
else version (iOS)
    version = Darwin;
else version (TVOS)
    version = Darwin;
else version (WatchOS)
    version = Darwin;

version (Darwin):
extern (C):
nothrow:
@nogc:
@system:

import core.sys.posix.sys.socket;

///
struct ifaddrs
{
    /// Next item in the list
    ifaddrs* ifa_next;
    /// Name of the interface
    char* ifa_name;
    /// Flags from SIOCGIFFLAGS
    uint ifa_flags;
    /// Address of interface
    sockaddr* ifa_addr;
    /// Netmask of interface
    sockaddr* ifa_netmask;
    /// Point-to-point destination addresss
    sockaddr* if_dstaddr;
    /// Address specific data
    void* ifa_data;
}

/// Returns: linked list of ifaddrs structures describing interfaces
int getifaddrs(ifaddrs**);
/// Frees the linked list returned by getifaddrs
void freeifaddrs(ifaddrs*);

///
struct ifmaddrs
{
    /// Pointer to next struct
    ifmaddrs* ifma_next;
    /// Interface name (AF_LINK)
    sockaddr* ifma_name;
    /// Multicast address
    sockaddr* ifma_addr;
    /// Link-layer translation, if any
    sockaddr* ifma_lladdr;
}

/// Stores a reference to a linked list of the multicast memberships
/// on the local machine in the memory referenced by ifmaddrs
int getifmaddrs(ifmaddrs**);
/// Frees the list allocated by getifmaddrs
void freeifmaddrs(ifmaddrs*);