====== std.net.types ====== Typdefinitionen und Hilfsfunktionen für Socket-Adressen und IP-Adressen. Enthält Strukturen für IPv4 (''SockAddrIn''), IPv6 (''SockAddrIn6''), MAC-Adressen, Ethernet-Header und ARP-Pakete sowie Konvertierungsfunktionen zwischen Host- und Netzwerk-Byte-Order (''Htons''/''Ntohs'') und IP-Adress-Parser für IPv4 und IPv6. Wird von nahezu allen Netzwerk-Units als gemeinsame Datenbasis importiert und ist selten direkt einzubinden – die höheren Units (''std.net.socket'', ''std.net.http'' etc.) importieren sie automatisch. ---- ===== Konstanten ===== ^ Name ^ Typ ^ Wert ^ Sichtbarkeit ^ | ''AF_INET'' | ''int64'' | ''2'' | pub | | ''AF_INET6'' | ''int64'' | ''10'' | pub | | ''SOCK_STREAM'' | ''int64'' | ''1'' | pub | | ''SOCK_DGRAM'' | ''int64'' | ''2'' | pub | | ''SOCK_RAW'' | ''int64'' | ''3'' | pub | | ''IPPROTO_TCP'' | ''int64'' | ''6'' | pub | | ''IPPROTO_UDP'' | ''int64'' | ''17'' | pub | | ''IPPROTO_ICMP'' | ''int64'' | ''1'' | pub | | ''IPPROTO_RAW'' | ''int64'' | ''255'' | pub | | ''SOL_SOCKET'' | ''int64'' | ''1'' | pub | | ''SO_REUSEADDR'' | ''int64'' | ''2'' | pub | | ''TCP_NODELAY'' | ''int64'' | ''1'' | pub | | ''TCP_KEEPALIVE'' | ''int64'' | ''$10'' | pub | | ''SO_KEEPALIVE'' | ''int64'' | ''9'' | pub | | ''SO_RCVBUF'' | ''int64'' | ''8'' | pub | | ''SO_SNDBUF'' | ''int64'' | ''7'' | pub | | ''SO_ERROR'' | ''int64'' | ''4'' | pub | | ''SO_TYPE'' | ''int64'' | ''3'' | pub | | ''SO_REUSEPORT'' | ''int64'' | ''15'' | pub | | ''SO_LINGER'' | ''int64'' | ''13'' | pub | | ''MSG_PEEK'' | ''int64'' | ''2'' | pub | | ''MSG_DONTWAIT'' | ''int64'' | ''64'' | pub | | ''PROT_READ'' | ''int64'' | ''1'' | pub | | ''PROT_WRITE'' | ''int64'' | ''2'' | pub | | ''PROT_RW'' | ''int64'' | ''3'' | pub | | ''MAP_ANONYMOUS'' | ''int64'' | ''32'' | pub | | ''MAP_PRIVATE'' | ''int64'' | ''2'' | pub | | ''MAP_ANON'' | ''int64'' | ''34'' | pub | | ''FD_NONE'' | ''int64'' | ''-1'' | pub | | ''ICMP_ECHO'' | ''int64'' | ''8'' | pub | | ''ICMP_ECHOREPLY'' | ''int64'' | ''0'' | pub | | ''ETH_P_IP'' | ''int64'' | ''$0800'' | pub | | ''ETH_P_ARP'' | ''int64'' | ''$0806'' | pub | | ''ETH_P_IPV6'' | ''int64'' | ''$86DD'' | pub | | ''ETH_ALEN'' | ''int64'' | ''6'' | pub | | ''ARPOP_REQUEST'' | ''int64'' | ''1'' | pub | | ''ARPOP_REPLY'' | ''int64'' | ''2'' | pub | | ''ARPOP_RREQUEST'' | ''int64'' | ''3'' | pub | | ''ARPOP_RREPLY'' | ''int64'' | ''4'' | pub | | ''ARPOP_INREQUEST'' | ''int64'' | ''8'' | pub | | ''ARPOP_INREPLY'' | ''int64'' | ''9'' | pub | | ''ARPOP_NAK'' | ''int64'' | ''10'' | pub | | ''ARPHRD_ETHER'' | ''int64'' | ''1'' | pub | | ''UNIX_PATH_MAX'' | ''int64'' | ''108'' | pub | ---- ===== Typen ===== ==== NativeSocket = int64 ==== ==== IPAddr (struct) ==== ^ Feld ^ Typ ^ | ''family'' | ''int64'' | | ''a'' | ''uint8'' | | ''b'' | ''uint8'' | | ''c'' | ''uint8'' | | ''d'' | ''uint8'' | | ''port'' | ''uint16'' | ==== SockAddrIn (struct) ==== ^ Feld ^ Typ ^ | ''family'' | ''uint16'' | | ''port'' | ''uint16'' | | ''addr'' | ''int64'' | | ''zero'' | ''int64'' | ==== MacAddr (struct) ==== ^ Feld ^ Typ ^ | ''a'' | ''uint8'' | | ''b'' | ''uint8'' | | ''c'' | ''uint8'' | | ''d'' | ''uint8'' | | ''e'' | ''uint8'' | | ''f'' | ''uint8'' | ==== EthernetHeader (struct) ==== ^ Feld ^ Typ ^ | ''dst'' | ''MacAddr'' | | ''src'' | ''MacAddr'' | | ''ethertype'' | ''uint16'' | ==== ARPPacket (struct) ==== ^ Feld ^ Typ ^ ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''Htons(port: uint16): uint16'' | pub | Konvertiert Port in Netzwerk-Byte-Order | | ''Ntohs(port: uint16): uint16'' | pub | Konvertiert Port in Host-Byte-Order | | ''asciiToDigit(c: int64): int64'' | priv | Wandelt ASCII-Zeichen in Dezimalziffer | | ''parseOctet(s: int64, pos: int64, len: int64, outVal: int64): int64'' | priv | Parst ein IPv4-Oktet aus String | | ''parsePort(s: int64, pos: int64, len: int64, outPort: int64): int64'' | priv | Parst Portnummer aus String | | ''ParseIPAddr(s: int64, len: int64): IPAddr'' | pub | Parst IPv4-Adresse aus String | | ''MakeSockAddr(ip: IPAddr): SockAddrIn'' | pub | Erstellt SockAddrIn aus IPAddr | | ''SockAddrInCreate(addr: int64, ip: int64, port: int64)'' | pub | Befüllt sockaddr_in-Struktur im Speicher | | ''TimeValCreate(addr: int64, timeoutMs: int64)'' | pub | Schreibt timeval-Struktur in Speicher | | ''SockAddrUnCreate(addr: int64, path: int64): int64'' | pub | Befüllt sockaddr_un-Struktur mit Pfad | | ''IPv6MakeHi(a: int64, b: int64, c: int64, d: int64): int64'' | pub | Packt obere vier IPv6-Gruppen | | ''IPv6MakeLo(e: int64, f: int64, g: int64, h: int64): int64'' | pub | Packt untere vier IPv6-Gruppen | | ''IPv6GetGroup(ip6Hi: int64, ip6Lo: int64, i: int64): int64'' | pub | Liest IPv6-Gruppe per Index | | ''IPv6LoopbackHi(): int64 { return 0; }'' | pub | Gibt obere Hälfte der Loopback-Adresse | | ''IPv6LoopbackLo(): int64 { return 1; }'' | pub | Gibt untere Hälfte der Loopback-Adresse | | ''IPv6AnyHi(): int64 { return 0; }'' | pub | Gibt obere Hälfte der Any-Adresse | | ''IPv6AnyLo(): int64 { return 0; }'' | pub | Gibt untere Hälfte der Any-Adresse | | ''SockAddrIn6Create(addr: int64, ip6Hi: int64, ip6Lo: int64, port: int64)'' | pub | Befüllt sockaddr_in6-Struktur im Speicher | | ''hexDigit(c: int64): int64'' | priv | Wandelt Hex-Zeichen in Zahlenwert | | ''parseIPv6Group(s: int64, pos: int64, len: int64, outVal: int64): int64'' | priv | Parst einzelne IPv6-Gruppe aus String | | ''ParseIPv6(s: int64, len: int64, outHi: int64, outLo: int64)'' | pub | Parst vollständige IPv6-Adresse | | ''nibbleToHex(d: int64): int64'' | priv | Wandelt Nibble in Hex-Zeichen | | ''writeHex16(buf: int64, pos: int64, val: int64): int64'' | priv | Schreibt 16-Bit-Wert als Hex-String | | ''IPv6Format(ip6Hi: int64, ip6Lo: int64, buf: int64)'' | pub | Formatiert IPv6-Adresse als String |