.\" -*- coding: UTF-8 -*- .\" This man page is Copyright (C) 1999 Andi Kleen . .\" .\" %%%LICENSE_START(VERBATIM_ONE_PARA) .\" Permission is granted to distribute possibly modified copies .\" of this page provided the header is included verbatim, .\" and in case of nontrivial modification author and date .\" of the modification is added to the header. .\" %%%LICENSE_END .\" .\" $Id: ip.7,v 1.19 2000/12/20 18:10:31 ak Exp $ .\" .\" FIXME The following socket options are yet to be documented .\" .\" IP_XFRM_POLICY (2.5.48) .\" Needs CAP_NET_ADMIN .\" .\" IP_IPSEC_POLICY (2.5.47) .\" Needs CAP_NET_ADMIN .\" .\" IP_MINTTL (2.6.34) .\" commit d218d11133d888f9745802146a50255a4781d37a .\" Author: Stephen Hemminger .\" .\" MCAST_JOIN_GROUP (2.4.22 / 2.6) .\" .\" MCAST_BLOCK_SOURCE (2.4.22 / 2.6) .\" .\" MCAST_UNBLOCK_SOURCE (2.4.22 / 2.6) .\" .\" MCAST_LEAVE_GROUP (2.4.22 / 2.6) .\" .\" MCAST_JOIN_SOURCE_GROUP (2.4.22 / 2.6) .\" .\" MCAST_LEAVE_SOURCE_GROUP (2.4.22 / 2.6) .\" .\" MCAST_MSFILTER (2.4.22 / 2.6) .\" .\" IP_UNICAST_IF (3.4) .\" commit 76e21053b5bf33a07c76f99d27a74238310e3c71 .\" Author: Erich E. Hoover .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH IP 7 "1 listopada 2020 r." Linux "Podręcznik programisty Linuksa" .SH NAZWA ip \- Implementacja protokołu IPv4 dla systemu Linux .SH SKŁADNIA \fB#include \fP .br .\" .B #include -- does not exist anymore .\" .B #include -- never include \fB#include \fP .br \fB#include \fP/* nadzbiór poprzedniego */ .PP \fItcp_socket\fP\fB = socket(AF_INET, SOCK_STREAM, 0);\fP .br \fIudp_socket\fP\fB = socket(AF_INET, SOCK_DGRAM, 0);\fP .br \fIraw_socket\fP\fB = socket(AF_INET, SOCK_RAW, \fP\fIprotokół\fP\fB);\fP .SH OPIS Linux implementuje protokół IPv4 opisany w RFC\ 791 i RFC\ 1122. \fBip\fP zawiera drugi poziom implementacji adresowania grupowego (multicasting) zgodny z RFC\ 1112. Zawiera też router IP, włączając w to filtr pakietów. .PP Interfejs programistyczny jest zgodny z gniazdami BSD. Więcej informacji na temat gniazd można znaleźć, przeglądając \fBsocket\fP(7). .PP Gniazdo IP jest tworzone za pomocą \fBsocket\fP(2): .PP socket(AF_INET, typ_gniazda, protokół); .PP Valid socket types include \fBSOCK_STREAM\fP to open a stream socket, \fBSOCK_DGRAM\fP to open a datagram socket, and \fBSOCK_RAW\fP to open a \fBraw\fP(7) socket to access the IP protocol directly. .PP \fIprotocol\fP is the IP protocol in the IP header to be received or sent. Valid values for \fIprotocol\fP include: .IP \(bu 2 0 and \fBIPPROTO_TCP\fP for \fBtcp\fP(7) stream sockets; .IP \(bu 0 and \fBIPPROTO_UDP\fP for \fBudp\fP(7) datagram sockets; .IP \(bu \fBIPPROTO_SCTP\fP for \fBsctp\fP(7) stream sockets; and .IP \(bu \fBIPPROTO_UDPLITE\fP for \fBudplite\fP(7) datagram sockets. .PP For \fBSOCK_RAW\fP you may specify a valid IANA IP protocol defined in RFC\ 1700 assigned numbers. .PP Kiedy proces chce odbierać nowe, nadchodzące pakiety lub połączenia, powinien podłączyć gniazdo do adresu lokalnego interfejsu za pomocą funkcji \fBbind\fP(2). W takim przypadku do dowolnej lokalnej pary (adres, port) można podłączyć tylko jedno gniazdo IP. Gdy w wywołaniu \fBbind\fP(2) podana jest wartość \fBINADDR_ANY\fP, to gniazdo zostanie dowiązane do \fIwszystkich\fP lokalnych interfejsów sieciowych. Gdy do niedowiązanego gniazda wywoływane jest \fBlisten\fP(2), to gniazdo zostanie automatycznie dowiązane do losowo wybranego wolnego portu, przy czym adres lokalny zostanie ustawiony na \fBINADDR_ANY\fP. Gdy dla niedowiązanego gniazda zostanie wywołane \fBconnect\fP(2), gniazdo to zostanie automatycznie dowiązane do losowo wybranego wolnego portu lub do używalnego portu dzielonego, przy czym adres lokalny zostanie ustawiony na \fBINADDR_ANY\fP. .PP Przypisywanie (często w literaturze: "nazywanie") lokalnego gniazda TCP jest niemożliwe przez pewien okres czasu po jego zamknięciu, chyba że zostanie dla tego gniazda ustawiony atrybut \fBSO_REUSEADDR\fP. Należy używać tego atrybutu z rozwagą, gdyż czyni on TCP mniej niezawodnym. .SS "Format adresu" Adres gniazda IP jest przedstawiony za pomocą kombinacji adresu interfejsu IP i 16\-bitowego numeru portu. Podstawowy protokół IP nie zawiera numerów portów, są one zaimplementowane w protokołach wyższej warstwy, takich jak \fBudp\fP(7) i \fBtcp\fP(7). Dla gniazd surowych \fIsin_port\fP jest ustawione na protokół IP. .PP .in +4n .EX struct sockaddr_in { sa_family_t sin_family; /* rodzina adresów: AF_INET */ in_port_t sin_port; /* port \- sieciowa kolejność bajtów */ struct in_addr sin_addr; /* adres internetowy */ }; /* Adres internetowy */ struct in_addr { uint32_t s_addr; /* adres \- sieciowa kolejność bajtów */ }; .EE .in .PP \fIsin_family\fP is always set to \fBAF_INET\fP. This is required; in Linux 2.2 most networking functions return \fBEINVAL\fP when this setting is missing. \fIsin_port\fP contains the port in network byte order. The port numbers below 1024 are called \fIprivileged ports\fP (or sometimes: \fIreserved ports\fP). Only a privileged process (on Linux: a process that has the \fBCAP_NET_BIND_SERVICE\fP capability in the user namespace governing its network namespace) may \fBbind\fP(2) to these sockets. Note that the raw IPv4 protocol as such has no concept of a port, they are implemented only by higher protocols like \fBtcp\fP(7) and \fBudp\fP(7). .PP \fIsin_addr\fP is the IP host address. The \fIs_addr\fP member of \fIstruct in_addr\fP contains the host interface address in network byte order. \fIin_addr\fP should be assigned one of the \fBINADDR_*\fP values (e.g., \fBINADDR_LOOPBACK\fP) using \fBhtonl\fP(3) or set using the \fBinet_aton\fP(3), \fBinet_addr\fP(3), \fBinet_makeaddr\fP(3) library functions or directly with the name resolver (see \fBgethostbyname\fP(3)). .PP .\" Leave a loophole for XTP @) IPv4 addresses are divided into unicast, broadcast, and multicast addresses. Unicast addresses specify a single interface of a host, broadcast addresses specify all hosts on a network, and multicast addresses address all hosts in a multicast group. Datagrams to broadcast addresses can be sent or received only when the \fBSO_BROADCAST\fP socket flag is set. In the current implementation, connection\-oriented sockets are allowed to use only unicast addresses. .PP Należy zauważyć, że dla adresu i portu zawsze jest używana sieciowa kolejność bajtów. W szczególności oznacza to, że trzeba używać funkcji \fBhtons\fP(3) dla numeru przypisanego do portu. Wszystkie funkcje standardowej biblioteki manipulujące adresem/portem automatycznie przekształcają podaną wartość na jej sieciową reprezentację. .PP Istnieje kilka adresów specjalnych: \fBINADDR_LOOPBACK\fP (127.0.0.1) zawsze odnosi się do lokalnego hosta poprzez urządzenie loopback; \fBINADDR_ANY\fP (0.0.0.0) oznacza przy dowiązywaniu dowolny adres; \fBINADDR_BROADCAST\fP (255.255.255.255) oznacza dowolny komputer i ze względów historycznych zachowuje się przy dowiązywaniu tak samo, jak \fBINADDR_ANY\fP. .SS "Opcje gniazda" .\" or SOL_IP on Linux IP wspiera niektóre opcje specyficzne dla protokołu, które mogą być ustawione przy użyciu \fBsetsockopt\fP(2) i odczytane z pomocą \fBgetsockopt\fP(2). Poziom opcji gniazda dla IP to \fBIPPROTO_IP\fP. Dla każdego ze znaczników logicznych wartość całkowita zero oznacza fałsz, a każda inna \- prawdę. .PP Gdy poda się\ nieprawidłową opcję\ gniazda, \fBgetsockopt\fP(2) i \fBsetsockopt\fP(2) zwrócą błąd \fBENOPROTOOPT\fP. .TP \fBIP_ADD_MEMBERSHIP\fP (od Linuksa 1.2) Przyłącza grupę adresów. Argumentem jest struktura \fIip_mreqn \fP. .PP .in +4n .EX struct ip_mreqn { struct in_addr imr_multiaddr; /* grupowy adres IP */ struct in_addr imr_address; /* adres IP interfejsu lokalnego */ int imr_ifindex; /* indeks interfejsu */ }; .EE .in .PP .\" (i.e., within the 224.0.0.0-239.255.255.255 range) \fIimr_multiaddr\fP zawiera adres grupy, którą aplikacja chce podłączyć lub rozłączyć. Musi być to poprawny adres grupowy (multicast; w przeciwnym wypadku \fBsetsockopt\fP(2) zwróci błąd \fBEINVAL\fP). \fIimr_address\fP jest to adres lokalnego interfejsu, przez który system powinien połączyć grupę; jeśli jest równy \fBINADDR_ANY\fP, to odpowiedni interfejs jest wybierany przez system. \fIimr_ifindex\fP jest indeksem interfejsu, który powinien być podłączony/odłączony do obsługi grupy \fIimr_multiaddr\fP lub 0, by wskazać na dowolny interfejs. .IP Struktura \fIip_mreqn\fP jest dostępna tylko od wersji 2.2 Linuksa. Dla kompatybilności, stara struktura \fIip_mreq\fP wciąż jest obsługiwana. Różni się wprawdzie od \fIip_mreqn\fP, lecz tylko tym, że nie zawiera pola \fIimr_ifindex\fP (jądro określa którą strukturę zastosowano na podstawie rozmiaru podanego w \fIoptlen\fP). .IP .\" \fBIP_ADD_MEMBERSHIP\fP jest prawidłowe wyłącznie dla \fBsetsockopt\fP(2). .TP \fBIP_ADD_SOURCE_MEMBERSHIP\fP (od Linuksa 2.4.22 / 2.5.68) Przyłącza adres grupowy (multicast) i zezwala na otrzymywanie danych jedynie z podanego źródła. Argumentem jest struktura \fIip_mreq_source\fP. .PP .in +4n .EX struct ip_mreq_source { struct in_addr imr_multiaddr; /* grupowy adres IP */ struct in_addr imr_interface; /* adres IP interfejsu lokalnego */ struct in_addr imr_sourceaddr; /* adres IP grupowego źródła */ }; .EE .in .PP The \fIip_mreq_source\fP structure is similar to \fIip_mreqn\fP described under \fBIP_ADD_MEMBERSHIP\fP. The \fIimr_multiaddr\fP field contains the address of the multicast group the application wants to join or leave. The \fIimr_interface\fP field is the address of the local interface with which the system should join the multicast group. Finally, the \fIimr_sourceaddr\fP field contains the address of the source the application wants to receive data from. .IP Opcja może być użyta kilkakrotnie aby otrzymywać dane z kilku źródeł. .TP \fBIP_BIND_ADDRESS_NO_PORT\fP (od Linuksa 4.2) .\" commit 90c337da1524863838658078ec34241f45d8394d Informuje jądro, aby nie rezerwować portu efemerycznego przy korzystaniu z \fBbind\fP(2) z numerem portu 0. Port będzie wybrany automatycznie później, w trakcie wykonywania \fBconnect\fP(2), w sposób umożliwiający współdzielenie portu źródłowego tak długo, jak długo unikatowa jest czteroelementowa krotka. .TP \fBIP_BLOCK_SOURCE\fP (od Linuksa 2.4.22 / 2.5.68) Kończy otrzymywanie danych grupowych z podanego źródła i podanej grupy. Jest to odpowiednie jedynie po zapisaniu się do adresu grupowego za pomocą \fBIP_ADD_MEMBERSHIP\fP lub \fBIP_ADD_SOURCE_MEMBERSHIP\fP. .IP Argumentem jest struktura \fIip_mreq_source\fP opisana w części dotyczącej \fBIP_ADD_SOURCE_MEMBERSHIP\fP. .TP \fBIP_DROP_MEMBERSHIP\fP (od Linuksa 1.2) Odłącza się od grupy adresów. Argumentem jest struktura \fIip_mreqn\fP lub \fIip_mreq\fP podobna do \fBIP_ADD_MEMBERSHIP\fP. .TP \fBIP_DROP_SOURCE_MEMBERSHIP\fP (od Linuksa 2.4.22 / 2.5.68) Leave a source\-specific group\(emthat is, stop receiving data from a given multicast group that come from a given source. If the application has subscribed to multiple sources within the same group, data from the remaining sources will still be delivered. To stop receiving data from all sources at once, use \fBIP_DROP_MEMBERSHIP\fP. .IP Argumentem jest struktura \fIip_mreq_source\fP opisana w części dotyczącej \fBIP_ADD_SOURCE_MEMBERSHIP\fP. .TP \fBIP_FREEBIND\fP (od Linuksa 2.4) .\" Precisely: 2.4.0-test10 Jeśli jest włączona, to ta opcja logiczna pozwala na przypisanie do adresu nielokalnego lub (jeszcze) nieistniejącego. Pozwala to na nasłuchiwanie na gnieździe bez wymagania, żeby interfejs sieciowy niższej warstwy lub podany dynamiczny adres IP były ustawione podczas próby przypisania gniazda przez aplikację. Ta opcja jest odpowiednikiem \- dla pojedynczego gniazda \- opisanego poniżej interfejsu \fI/proc\fP \fIip_nonlocal_bind\fP. .TP \fBIP_HDRINCL\fP (od Linuksa 2.0) Jeśli włączone, to dopuszczalne jest tworzenie przez użytkownika własnego nagłówka IP przed danymi użytkownika. Działa to jedynie dla gniazd \fBSOCK_RAW\fP, patrz \fBraw\fP(7), by uzyskać więcej informacji. Gdy ten znacznik jest włączony, to wartości ustawiane przez \fBIP_OPTIONS\fP, \fBIP_TTL\fP i \fBIP_TOS\fP są ignorowane. .TP \fBIP_MSFILTER\fP (od Linuksa 2.4.22 / 2.5.68) Opcja pozwala na uzyskanie dostępu do zaawansowanego interfejsu filtrowania pełnostanowego. Argumentem jest struktura \fIip_msfilter\fP. .PP .in +4n .EX struct ip_mreqn { struct in_addr imsf_multiaddr; /* grupowy adres IP */ struct in_addr imsf_interface; /* adres IP interfejsu lokalnego */ uint32_t imsf_fmode; /* tryb filtra */ }; uint32_t imsf_numsrc; /* Liczba źródeł w kolejnej macierzy */ struct in_addr imsf_slist[1]; /* Macierz źródeł adresów */ }; .EE .in .PP Do określenia trybu filtrowania służą dwa makra \- \fBMCAST_INCLUDE\fP i \fBMCAST_EXCLUDE\fP. Makro \fBIP_MSFILTER_SIZE\fP(n) służy natomiast do określenia wielkości pamięci potrzebnej do przechowania struktury \fIip_msfilter\fP z \fIn\fP źródeł w liście źródeł. .IP Pełny opis filtrowania źródeł adresów zawiera dokument RFC 3376. .TP \fBIP_MTU\fP (od Linuksa 2.2) .\" Precisely: 2.1.124 Pobiera bieżącą wartość MTU ścieżki obecnego gniazda. Zwraca liczbę całkowitą. .IP \fBIP_MTU\fP jest poprawne tylko do \fBgetsockopt\fP(2) i można go użyć wyłącznie gdy gniazdo zostało połączone. .TP \fBIP_MTU_DISCOVER\fP (od Linuksa 2.2) .\" Precisely: 2.1.124 Ustawia lub pobiera opcję badania MTU ścieżki (ang. Path MTU Discovery) dla gniazda. Gdy opcja ta jest włączona, to Linux będzie przeprowadzał badanie MTU ścieżki dla gniazd \fBSOCK_STREAM\fP zgodnie z definicją zawartą w RFC\ 1191. W przypadku gniazd nie będących gniazdami \fBSOCK_STREAM\fP, \fBIP_PMTUDISC_DO\fP wymusza ustawienie we wszystkich pakietach wychodzących znacznika zakazu fragmentacji. Za poprawne zgodne z wartością MTU, podzielenie na pakiety i za wykonanie ewentualnych retransmisji jest odpowiedzialny program użytkownika. Jądro odrzuci (z błędem \fBEMSGSIZE\fP) pakiety większe niż znane MTU ścieżki. Ustawienie znacznika \fBIP_PMTUDISC_WANT\fP spowoduje sfragmentowanie datagramu, jeśli MTU ścieżki tego wymaga, albo \- w przeciwnym wypadku \- ustawienie znacznika zakazującego fragmentacji. .IP Domyślną dla systemu wartość można ustawić na \fBIP_PMTUDISC_WANT\fP lub na \fBIP_PMTUDISC_DONT\fP, wpisując odpowiednio \- zero lub wartość niezerową \- do pliku \fI/proc/sys/net/ipv4/ip_no_pmtu_disc\fP. .TS tab(:); c l l l. Wart. badan. MTU ścieżki:Znaczenie IP_PMTUDISC_WANT:Używaj ustawień zależnych od trasy. IP_PMTUDISC_DONT:Nie badaj MTU ścieżki. IP_PMTUDISC_DO:Zawsze badaj MTU ścieżki. IP_PMTUDISC_PROBE:Ustawia bit DF, ale ignoruje MTU ścieżki. .TE .sp 1 Gdy włączone jest badanie MTU ścieżki, jądro automatycznie namierza wartości MTU ścieżki dla każdego komputera docelowego. Gdy aktywne jest połączenie z danym komputerem, można wygodnie odczytać aktualnie rozpoznaną wartość MTU ścieżki za pomocą \fBconnect\fP(2) używając opcji gniazda \fBIP_MTU\fP (np. po wystąpieniu błędu \fBEMSGSIZE\fP). Wartość MTU ścieżki może się zmieniać z czasem. Dla gniazd bezpołączeniowych z wieloma komputerami docelowymi MTU dla danego, również nowego, komputera docelowego można uzyskać za pomocą kolejki błędów (zobacz \fBIP_RECVERR\fP). Po nadejściu każdej aktualizacji MTU zostanie skolejkowany nowy błąd. .IP W trakcie rozpoznawania MTU, pakiety inicjujące z gniazd datagramowych mogą zostać porzucone. Programy korzystające z UDP powinny być tego świadome i nie brać tego pod uwagę w swojej strategii retransmisji pakietów. .IP To bootstrap the path MTU discovery process on unconnected sockets, it is possible to start with a big datagram size (headers up to 64 kilobytes long) and let it shrink by updates of the path MTU. .IP Aby oszacować inicjalne MTU ścieżki, należy podłączyć gniazdo datagramowe do adresu docelowego za pomocą \fBconnect\fP(2) i pobrać MTU, wołając \fBgetsockopt\fP(2) z opcją \fBIP_MTU\fP. .IP Poprzez ustawienie wartości w \fBIP_PMTUDISC_PROBE\fP (dostępnej od Linuksa 2.6.22) możliwe jest zaimplementowanie opisanego w RFC\ 4821 próbkowania MTU dla gniazd \fBSOCK_DGRAM\fP lub \fBSOCK_RAW\fP. Jest to szczególnie użyteczne w narzędziach diagnostycznych typu \fBtracepath\fP(8), które w sposób zamierzony chcą wysyłać pakiety testowe większe niż zaobserwowane MTU ścieżki. .TP \fBIP_MULTICAST_ALL\fP (od Linuksa 2.6.31) Tej opcji można użyć do modyfikacji zasad dostarczania wiadomości grupowych do gniazd ograniczonych maską adresu \fBINADDR_ANY\fP. Argument wynosi 0 lub 1 (domyślnie 1). Gdy jest ustawiony na 1, to gniazdo otrzyma wiadomości ze wszystkich grup, które dołączono globalnie z całego systemu. W przeciwnym razie dostarczone będą tylko wiadomości z grup dołączonych jawnie (np. opcją \fBIP_ADD_MEMBERSHIP\fP) do tego konkretnego gniazda. .TP \fBIP_MULTICAST_IF\fP (od Linuksa 1.2) .\" net: IP_MULTICAST_IF setsockopt now recognizes struct mreq .\" Commit: 3a084ddb4bf299a6e898a9a07c89f3917f0713f7 Ustawia lokalne urządzenie dla gniazda grupowego. Argumentem do \fBsetsockopt\fP(2) jest \fIip_mreqn\fP lub (od Linuksa 3.5) \fIip_mreq\fP, struktura podobna do \fBIP_ADD_MEMBERSHIP\fP; albo struktura \fIin_addr\fP (jądro określa którą strukturę się podało na podstawie rozmiaru przekazanego w \fIoptlen\fP). Do \fBgetsockopt\fP(2) argumentem jest struktura \fIin_addr\fP. .TP \fBIP_MULTICAST_LOOP\fP (od Linuksa 1.2) Ustawia lub pobiera logiczny argument typu całkowitego, określający, czy przesyłane pakiety grupowe powinny wracać do lokalnego gniazda. .TP \fBIP_MULTICAST_TTL\fP (od Linuksa 1.2) Ustawia lub pobiera wartość czasu życia pakietu dla wychodzących z tego gniazda pakietów grupowych. Jest bardzo istotne w przypadku adresowania grupowego, by ustawić najmniejszą możliwą wartość TTL. Domyślnie jest to 1, co oznacza, że pakiety grupowe nie opuszczają sieci lokalnej, chyba że program użytkownika wyraźnie tego żąda. Argument jest liczbą całkowitą. .TP \fBIP_NODEFRAG\fP (od Linuksa 2.6.36) Jeśli włączone (argument jest niezerowy), łączenie pakietów wychodzących przez warstwę netfilter jest wyłączone. Argumentem jest liczba całkowita. .IP Ta opcja jest prawidłowa tylko dla gniazd \fBSOCK_RAW\fP. .TP \fBIP_OPTIONS\fP (od Linuksa 2.0) .\" Precisely: 1.3.30 Set or get the IP options to be sent with every packet from this socket. The arguments are a pointer to a memory buffer containing the options and the option length. The \fBsetsockopt\fP(2) call sets the IP options associated with a socket. The maximum option size for IPv4 is 40 bytes. See RFC\ 791 for the allowed options. When the initial connection request packet for a \fBSOCK_STREAM\fP socket contains IP options, the IP options will be set automatically to the options from the initial packet with routing headers reversed. Incoming packets are not allowed to change options after the connection is established. The processing of all incoming source routing options is disabled by default and can be enabled by using the \fIaccept_source_route\fP \fI/proc\fP interface. Other options like timestamps are still handled. For datagram sockets, IP options can be set only by the local user. Calling \fBgetsockopt\fP(2) with \fBIP_OPTIONS\fP puts the current IP options used for sending into the supplied buffer. .TP \fBIP_PASSSEC\fP (since Linux 2.6.17) .\" commit 2c7946a7bf45ae86736ab3b43d0085e43947945c If labeled IPSEC or NetLabel is configured on the sending and receiving hosts, this option enables receiving of the security context of the peer socket in an ancillary message of type \fBSCM_SECURITY\fP retrieved using \fBrecvmsg\fP(2). This option is supported only for UDP sockets; for TCP or SCTP sockets, see the description of the \fBSO_PEERSEC\fP option below. .IP The value given as an argument to \fBsetsockopt\fP(2) and returned as the result of \fBgetsockopt\fP(2) is an integer boolean flag. .IP The security context returned in the \fBSCM_SECURITY\fP ancillary message is of the same format as the one described under the \fBSO_PEERSEC\fP option below. .IP Note: the reuse of the \fBSCM_SECURITY\fP message type for the \fBIP_PASSSEC\fP socket option was likely a mistake, since other IP control messages use their own numbering scheme in the IP namespace and often use the socket option value as the message type. There is no conflict currently since the IP option with the same value as \fBSCM_SECURITY\fP is \fBIP_HDRINCL\fP and this is never used for a control message type. .TP \fBIP_PKTINFO\fP (od Linuksa 2.2) .\" Precisely: 2.1.68 Pass an \fBIP_PKTINFO\fP ancillary message that contains a \fIpktinfo\fP structure that supplies some information about the incoming packet. This works only for datagram oriented sockets. The argument is a flag that tells the socket whether the \fBIP_PKTINFO\fP message should be passed or not. The message itself can be sent/retrieved only as a control message with a packet using \fBrecvmsg\fP(2) or \fBsendmsg\fP(2). .IP .in +4n .EX struct in_pktinfo { unsigned int ipi_ifindex; /* Indeks interfejsu */ struct in_addr ipi_spec_dst; /* Adres lokalny */ struct in_addr ipi_addr; /* Nagłówek adresu docelowego */ }; .EE .in .IP .\" This field is grossly misnamed \fIipi_ifindex\fP jest unikatowym indeksem interfejsu, przez który pakiet został odebrany. Adres \fIipi_spec_dst\fP jest lokalnym adresem pakietu, a \fIipi_addr\fP jest adresem docelowym wynikającym z nagłówka pakietu. Jeśli \fBIP_PKTINFO\fP jest przekazane do \fBsendmsg\fP(2), a \fIipi_spec_dst\fP ma wartość niezerową, to zostanie użyte jako źródłowy adres lokalny podczas przeszukiwania tablicy routingu i dla ustawienia opcji routingu według adresu źródłowego. Gdy \fIipi_ifindex\fP ma wartość niezerową, to podstawowy adres lokalny interfejsu wskazywanego przez ten indeks nadpisuje \fIipi_spec_dst\fP podczas przeszukiwania tablicy routingu. .TP \fBIP_RECVERR\fP (od Linuksa 2.2) .\" Precisely: 2.1.15 .\" or SOL_IP on Linux Włącza przekazywanie dodatkowych komunikatów o błędach, zwiększając niezawodność połączenia. Gdy jest to ustawione w gnieździe datagramowym, to wszystkie generowane błędy będą zapamiętane w specjalnej kolejce błędów przypisanej do gniazda. Gdy użytkownik (proces użytkownika) otrzyma błąd (przez zwrócony kod błędu operacji na gnieździe), to może go odebrać, używając funkcji \fBrecvmsg\fP(2) z ustawionym znacznikiem \fBMSG_ERRQUEUE\fP. Struktura opisująca błąd \fIsock_extended_err\fP zostanie przekazana w pomocniczym komunikacie o typie \fBIP_RECVERR\fP i poziomie \fBIPPROTO_IP\fP. Jest to niezwykle pomocne przy niezawodnym przechwytywaniu błędów niepołączonych gniazd. Odbierana z kolejki błędów porcja danych zawiera pakiet z informacją o błędzie. .IP Komunikat sterujący \fBIP_RECVERR\fP zawiera strukturę \fIsock_extended_err\fP zdefiniowaną następująco: .IP .in +4n .EX #define SO_EE_ORIGIN_NONE 0 #define SO_EE_ORIGIN_LOCAL 1 #define SO_EE_ORIGIN_ICMP 2 #define SO_EE_ORIGIN_ICMP6 3 struct sock_extended_err { uint32_t ee_errno; /* numer błędu */ uint8_t ee_origin; /* źródło błędu */ uint8_t ee_type; /* typ */ uint8_t ee_code; /* kod */ uint8_t ee_pad; uint32_t ee_info; /* informacje dodatkowe */ uint32_t ee_data; /* inne dane */ /* Dalej mogą wystąpić dodatkowe dane */ }; struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *); .EE .in .IP \fIee_errno\fP zawiera numer \fIerrno\fP błędu kolejki. \fIee_origin\fP jest kodem miejsca pochodzenia błędu. Pozostałe pola są zależne od protokołu. Makro \fBSO_EE_OFFENDER\fP zwraca wskaźnik do adresu obiektu sieciowego, z którego pochodził błąd o zadanym wskaźniku do komunikatu pomocniczego. Gdy ten adres nie jest znany, pole \fIsa_family\fP struktury \fIsockaddr\fP zawiera wartość \fBAF_UNSPEC\fP a pozostałe pola tej struktury \fIsockaddr\fP są niezdefiniowane. .IP .\" FIXME . Is it a good idea to document that? It is a dubious feature. .\" On .\" .B SOCK_STREAM .\" sockets, .\" .B IP_RECVERR .\" has slightly different semantics. Instead of .\" saving the errors for the next timeout, it passes all incoming .\" errors immediately to the user. .\" This might be useful for very short-lived TCP connections which .\" need fast error handling. Use this option with care: .\" it makes TCP unreliable .\" by not allowing it to recover properly from routing .\" shifts and other normal .\" conditions and breaks the protocol specification. IP używa struktury \fIsock_extended_err\fP w następujący sposób: \fIee_origin\fP ustawione na \fBSO_EE_ORIGIN_ICMP\fP dla błędów odbieranych jako pakiet ICMP albo też \fBSO_EE_ORIGIN_LOCAL\fP dla błędów generowanych lokalnie. Nieznane wartości należy ignorować. \fIee_type\fP i \fIee_code\fP są ustawiane zgodnie z typem i kodem pól w nagłówku ICMP. \fIee_info\fP zawiera rozpoznaną wartość MTU dla błędów \fBEMSGSIZE\fP. Komunikat zawiera również \fIsockaddr_in węzła\fP, który spowodował błąd, a do którego można uzyskać dostęp za pomocą makra \fBSO_EE_OFFENDER\fP. Pole \fIsin_family\fP adresu \fBSO_EE_OFFENDER\fP ma wartość \fIAF_UNSPEC\fP, gdy źródło błędu nie jest znane. Gdy błąd pochodzi z sieci, wszystkie opcje IP (\fBIP_OPTIONS\fP, \fBIP_TTL\fP itd.) włączone w gnieździe i zawarte w pakiecie błędu są przekazywane jako komunikaty kontrolne. Właściwe dane pakietu, który spowodował błąd są zwracane jako normalne dane. Należy zauważyć, że TCP nie ma kolejki błędów; \fBMSG_ERRQUEUE\fP jest nielegalne w przypadku gniazd \fBSOCK_STREAM\fP. \fBIP_RECVERR\fP jest poprawne dla TCP, ale wszystkie błędy są przekazywane przez zwracaną wartość funkcji albo przez \fBSO_ERROR\fP. .IP For raw sockets, \fBIP_RECVERR\fP enables passing of all received ICMP errors to the application, otherwise errors are reported only on connected sockets .IP Ustawia lub pobiera znacznik logiczny zapisany za pomocą liczby całkowitej. \fBIP_RECVERR\fP jest domyślnie wyłączone. .TP \fBIP_RECVOPTS\fP (od Linuksa 2.2) .\" Precisely: 2.1.15 Przekazuje użytkownikowi wszystkie nadchodzące opcje IP z komunikatu sterującego \fBIP_OPTIONS\fP. Nagłówek wyboru trasy i inne opcje są już wstępnie wypełnione informacjami o lokalnej maszynie. Nieobsługiwane w przypadku gniazd typu \fBSOCK_STREAM\fP. .TP \fBIP_RECVORIGDSTADDR\fP (od Linuksa 2.6.29) .\" commit e8b2dfe9b4501ed0047459b2756ba26e5a940a69 Ta opcja logiczna włącza komunikat pomocniczy \fBIP_ORIGDSTADDR\fP w \fBrecvmsg\fP(2), w którym jądro zwraca oryginalny adres docelowy otrzymywanego właśnie datagramu. Ten komunikat pomocniczy zawiera strukturę \fIstruct sockaddr_in\fP. .TP \fBIP_RECVTOS\fP (od Linuksa 2.2) .\" Precisely: 2.1.68 Jeśli jest ustawione, to pomocniczy komunikat \fBIP_TOS\fP jest przepuszczany razem z nadchodzącymi pakietami. Zawiera on bajt, który określa pole zdefiniowane także jako bajt znajdujące się w nagłówku pakietu, a zwane Typ Usługi/Pierwszeństwa. Wymaga logicznego znacznika w postaci liczby całkowitej. .TP \fBIP_RECVTTL\fP (od Linuksa 2.2) .\" Precisely: 2.1.68 When this flag is set, pass a \fBIP_TTL\fP control message with the time\-to\-live field of the received packet as a 32 bit integer. Not supported for \fBSOCK_STREAM\fP sockets. .TP \fBIP_RETOPTS\fP (od Linuksa 2.2) .\" Precisely: 2.1.15 Działanie identyczne do \fBIP_RECVOPTS\fP, ale zwraca surowe, nieprzetworzone opcje, włącznie z rekordem opcji, mówiącym o znaczniku czasowym i trasie, niewypełnionym wartościami w tym przejściu pakietu. .TP \fBIP_ROUTER_ALERT\fP (od Linuksa 2.2) .\" Precisely: 2.1.68 Pass all to\-be forwarded packets with the IP Router Alert option set to this socket. Valid only for raw sockets. This is useful, for instance, for user\-space RSVP daemons. The tapped packets are not forwarded by the kernel; it is the user's responsibility to send them out again. Socket binding is ignored, such packets are filtered only by protocol. Expects an integer flag. .TP \fBIP_TOS\fP (od Linuksa 1.0) .\" FIXME elaborate on this .\" The priority can also be set in a protocol-independent way by the .\" .RB ( SOL_SOCKET ", " SO_PRIORITY ) .\" socket option (see .\" .BR socket (7)). Ustawia lub pobiera pole znacznika Typ\-Usługi (ang. Type\-Of\-Service, w skrócie TOS), które jest przesyłane z każdym pakietem IP pochodzącym z danego gniazda. Służy do ustalenia priorytetów pakietów w sieci. TOS jest bajtem. Oto definicje niektórych standardowych znaczników TOS: \fBIPTOS_LOWDELAY\fP \- minimalizacja opóźnienia we wzajemnym ruchu, \fBIPTOS_THROUGHPUT\fP \- optymalizacja wyjścia, \fBIPTOS_RELIABILITY\fP \- optymalizacja pod kątem niezawodności, a \fBIPTOS_MINCOST\fP powinna być używana jako "dane wypełniające" tam, gdzie szybkość transmisji nie ma większego znaczenia. Można podać najwyżej jedną z powyższych wartości TOS. Inne bity są niepoprawne i powinny być wyzerowane. Linux domyślnie wysyła najpierw datagram \fBIPTOS_LOWDELAY\fP, ale dokładne zachowanie zależy od konfiguracji właściwości szeregowania. Niektóre poziomy o wysokim priorytecie mogą wymagać uprawnień administratora (ustawionego atrybutu \fICAP_NET_ADMIN\fP). .TP \fBIP_TRANSPARENT\fP (od Linuksa 2.6.24) .\" commit f5715aea4564f233767ea1d944b2637a5fd7cd2e .\" This patch introduces the IP_TRANSPARENT socket option: enabling that .\" will make the IPv4 routing omit the non-local source address check on .\" output. Setting IP_TRANSPARENT requires NET_ADMIN capability. .\" http://lwn.net/Articles/252545/ Ustawienie tej opcji logicznej włącza przezroczyste (ang. "transparent") proxy dla tego gniazda. Ta opcja gniazda pozwala wywołującej aplikacji przypisanie gniazda do nielokalnego adresu IP i operowanie jako zarówno klient, jak i serwer z zewnętrznym adresem IP dla lokalnego punktu docelowego. \fBUWAGA:\fP wymaga to takiego ustawienia reguł routingu, żeby pakiety wysyłane na ten adres zewnętrzny były przekazywane przez TProxy (tj. system na którym działa aplikacja korzysta z opcji gniazda \fBIP_TRANSPARENT\fP). Włączenie tej opcji wymaga uprawnień administratora (właściwość \fBCAP_NET_ADMIN\fP). .IP Przekierowanie TProxy używające celu TPROXY z \fBiptables\fP(8) także wymagają włączenia tej opcji w przekierowywanym gnieździe. .TP \fBIP_TTL\fP (od Linuksa 1.0) Ustawia lub pobiera pole "czas życia" (ang. Time\-To\-Live, w skrócie TTL) dla każdego wychodzącego z danego gniazda pakietu IP. .TP \fBIP_UNBLOCK_SOURCE\fP (od Linuksa 2.4.22 / 2.5.68) Odblokowuje zablokowaną uprzednio grupę adresów. Zwraca \fBEADDRNOTAVAIL\fP gdy podane źródło nie było zablokowane. .IP Argumentem jest struktura \fIip_mreq_source\fP opisana w części dotyczącej \fBIP_ADD_SOURCE_MEMBERSHIP\fP. .TP \fBSO_PEERSEC\fP (since Linux 2.6.17) If labeled IPSEC or NetLabel is configured on both the sending and receiving hosts, this read\-only socket option returns the security context of the peer socket connected to this socket. By default, this will be the same as the security context of the process that created the peer socket unless overridden by the policy or by a process with the required permissions. .IP The argument to \fBgetsockopt\fP(2) is a pointer to a buffer of the specified length in bytes into which the security context string will be copied. If the buffer length is less than the length of the security context string, then \fBgetsockopt\fP(2) returns \-1, sets \fIerrno\fP to \fBERANGE\fP, and returns the required length via \fIoptlen\fP. The caller should allocate at least \fBNAME_MAX\fP bytes for the buffer initially, although this is not guaranteed to be sufficient. Resizing the buffer to the returned length and retrying may be necessary. .IP The security context string may include a terminating null character in the returned length, but is not guaranteed to do so: a security context "foo" might be represented as either {'f','o','o'} of length 3 or {'f','o','o','\e0'} of length 4, which are considered to be interchangeable. The string is printable, does not contain non\-terminating null characters, and is in an unspecified encoding (in particular, it is not guaranteed to be ASCII or UTF\-8). .IP .\" commit 2c7946a7bf45ae86736ab3b43d0085e43947945c .\" commit d452930fd3b9031e59abfeddb2fa383f1403d61a The use of this option for sockets in the \fBAF_INET\fP address family is supported since Linux 2.6.17 for TCP sockets, and since Linux 4.17 for SCTP sockets. .IP .\" For SELinux, NetLabel conveys only the MLS portion of the security context of the peer across the wire, defaulting the rest of the security context to the values defined in the policy for the netmsg initial security identifier (SID). However, NetLabel can be configured to pass full security contexts over loopback. Labeled IPSEC always passes full security contexts as part of establishing the security association (SA) and looks them up based on the association for each packet. .SS "Interfejsy /proc" .\" FIXME As at 2.6.12, 14 Jun 2005, the following are undocumented: .\" ip_queue_maxlen .\" ip_conntrack_max .\" Protokół IP obsługuje zbiór interfejsów \fI/proc\fP i korzysta z niech do ustawiania niektórych parametrów globalnych. Parametry są dostępne przez zapis lub odczyt plików z katalogu \fI/proc/sys/net/ipv4/\fP. Interfejsy opisane jako \fIlogiczne\fP pobierają liczbę całkowitą, której wartość niezerowa ("prawda") oznacza, że dana opcja jest włączona, a zero ("fałsz"), oznacza, że opcja jest wyłączona. .TP \fIip_always_defrag\fP (logiczna; od Linuksa 2.2.13) [Nowa w jądrze 2.2.13; we wcześniejszych wersjach jądra funkcją tą sterowało się w czasie kompilacji za pomocą opcji \fBCONFIG_IP_ALWAYS_DEFRAG\fP, która nie jest już obecna w 2.4.x i kolejnych] .IP Gdy ten znacznik logiczny jest włączony (różny od 0), przychodzące fragmenty (części pakietów IP, które się pojawiają, gdy pewien komputer pomiędzy komputerem źródłowym a docelowym zdecyduje, że pakiety były za duże i podzieli je na kawałki) będą ponownie złożone (zdefragmentowane) przed ich przetworzeniem, nawet jeśli mają być przekazane dalej (and. forwarded). .IP Enable only if running either a firewall that is the sole link to your network or a transparent proxy; never ever use it for a normal router or host. Otherwise, fragmented communication can be disturbed if the fragments travel over different links. Defragmentation also has a large memory and CPU time cost. .IP .\" Jest to włączane automagicznie, gdy skonfigurowane jest maskowanie lub przezroczyste proxy. .TP \fIip_autoconfig\fP (od Linuksa 2.2 do 2.6.17) .\" Precisely: since 2.1.68 .\" FIXME document ip_autoconfig .\" Nie udokumentowane. .TP \fIip_default_ttl\fP (liczba, domyślnie: 64; od Linuksa 2.2) .\" Precisely: 2.1.15 .\" Ustawia domyślną wartość "czasu życia" (ang. time\-to\-live) wychodzących pakietów. Może być ona zmieniona dla gniazda za pomocą opcji \fBIP_TTL\fP. .TP \fIip_dynaddr\fP (logiczna; domyślnie: wyłączona; od Linuksa 2.0.31) .\" Włącza dynamiczne adresowanie gniazda oraz przepisywanie adresu dla maskowania przy zmianie adresu interfejsu. Jest to bardzo przydatne w przypadku korzystania z interfejsu sprzęgniętego z linią telefoniczną, którego adres IP może się zmieniać. 0 oznacza brak przepisywania, 1 włącza przepisywanie, a 2 włącza tryb rozwlekły (ang. verbose). .TP \fIip_forward\fP(logiczna; domyślnie: wyłączona; od Linuksa 1.2) .\" Włącza przekazywanie (ang. forwarding) pakietów przy użyciu logicznego znacznika. Może być ustawione także na podstawie interfejsu. .TP \fIip_local_port_range\fP (od Linuksa 2.2) .\" Precisely: since 2.1.68 Plik zawierający dwa liczby całkowite określające domyślny zakres lokalnych portów przypisanych do gniazd niebędących bezpośrednio przydzielonych do portu \- tj. zakres ten jest używany do \fIportów efemerycznych\fP (portów przypisywanych dynamicznie). Port efemeryczny jest przydzielany do gniazda w następujących sytuacjach: .RS .IP * 3 numer portu w adresie gniazda jest określony jako 0 w trakcie wywoływania \fBbind\fP(2); .IP * \fBlisten\fP(2) jest wywoływane na gnieździe strumieniowych, które nie było wcześniej przydzielone; .IP * \fBconnect\fP(2) była wywołana na gnieździe, które nie było wcześniej przydzielone; .IP * \fBsendto\fP(2) jest wywoływane na gnieździe datagramowym, które nie było wcześniej przydzielone. .RE .IP Przypisywanie portów efemerycznych rozpoczyna się od pierwszego numeru w \fIip_local_port_range\fP i kończy się na drugim numerze. Jeśli wyczerpie się zakres portów efemerycznych, to odpowiednie wywołanie systemowe zwróci błąd (ale proszę sprawdzić rozdział BŁĘDY!). .IP .\" Proszę zauważyć, że zakres portów w \fIip_local_port_range\fP nie powinien pokrywać się z zakresem portów wykorzystywanym do maskowania (chociaż taka sytuacja jest obsługiwana). Dowolny wybór może również powodować problemy z niektórymi zaporami sieciowymi, które robią pewne założenia odnośnie do portów używanych lokalnie. Pierwsza liczba powinna być większa niż 1024, albo \- co byłoby lepsze \- większa niż 4096, aby uniknąć konfliktów z dobrze znanymi portami i zminimalizować problemy z zaporami sieciowymi. .TP \fIip_no_pmtu_disc\fP (logiczna; domyślnie: wyłączona; od Linuksa 2.2) .\" Precisely: 2.1.15 .\" .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt Jeśli jest to włączone, to domyślnie nie będzie wykonywane badanie MTU ścieżki dla gniazd TCP. Badanie MTU może się nie sprawdzać w przypadku źle skonfigurowanych firewalli (odrzucających wszelkie pakiety ICMP) lub źle skonfigurowanych interfejsów (np. połączenie typu point\-to\-point, gdzie oba końce nie zgadzają się na MTU). Lepiej poprawić wszelkie wadliwie skonfigurowane rutery po drodze niż całkowicie wyłączyć badanie MTU ścieżki, ponieważ niewykonywanie tej operacji pociąga za sobą duże straty w obrębie sieci. .TP \fIip_nonlocal_bind\fP (logiczna; domyślnie: wyłączona; od Linuksa 2.4) .\" Precisely: patch-2.4.0-test10 .\" .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt Jeżeli ustawione, pozwala procesowi na wywołanie funkcji \fBbind\fP() z nielokalnym adresem IP, co może być całkiem przydatne, ale może popsuć niektóre aplikacje. .TP \fIip6frag_time\fP (liczba; domyślnie: 30) .\" .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt Czas w sekundach przetrzymywania w pamięci fragmentu IPv6. .TP \fIip6frag_secret_interval\fP (liczba; domyślnie: 600) Interwał (w sekundach) odświeżania sekretnego klucza funkcji mieszkającej (lub czasu życia tego klucza) dla fragmentów IPv6. .TP \fIipfrag_high_thresh\fP (liczba), \fIipfrag_low_thresh\fP (liczba) Jeśli liczba zebranych w kolejce fragmentów IP osiągnie wartość określoną przez \fIipfrag_high_thresh\fP, wtedy kolejka jest opróżniana do ilości określonej w \fIipfrag_low_thresh\fP. Zawiera ona liczbę całkowitą z podaną liczbą bajtów. .TP \fIneigh/*\fP .\" FIXME Document the conf/*/* interfaces .\" .\" FIXME Document the route/* interfaces Patrz \fBarp\fP(7). .SS "Kontrolki systemowe (ioctl)" Do protokołu \fBip\fP mają zastosowanie wszystkie kontrolki wejścia/wyjścia opisane w \fBsocket\fP(7). .PP .\" FIXME Add a discussion of multicasting Kontrolki konfigurowania ogólnych parametrów urządzenia są opisane w \fBnetdevice\fP(7). .SH BŁĘDY .\" FIXME document all errors. .\" We should really fix the kernels to give more uniform .\" error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.) .TP \fBEACCES\fP Użytkownik próbował wykonać operację, nie mając potrzebnych praw. Obejmuje to: wysyłanie pakietu na adres rozgłoszeniowy bez ustawionego znacznika \fBSO_BROADCAST\fP, wysyłanie pakietu \fIzakazaną\fP drogą, próbę modyfikacji ustawień firewalla, nie mając uprawnień administratora (ustawionego znacznika \fBCAP_NET_ADMIN\fP), próbę przypisania uprzywilejowanego portu, nie mając uprawnień administratora (ustawionego znacznika \fBCAP_NET_BIND_SERVICE\fP). .TP \fBEADDRINUSE\fP Próbowano przypisać port do adresu będącego już w użyciu. .TP \fBEADDRNOTAVAIL\fP Zażądano nieistniejącego interfejsu lub żądany adres źródłowy nie jest adresem lokalnym. .TP \fBEAGAIN\fP Operacja na gnieździe z wyłączonym blokowaniem spowodowałaby zablokowanie. .TP \fBEALREADY\fP A connection operation on a nonblocking socket is already in progress. .TP \fBECONNABORTED\fP Połączenie zostało zamknięte podczas \fBaccept\fP(2). .TP \fBEHOSTUNREACH\fP No valid routing table entry matches the destination address. This error can be caused by an ICMP message from a remote router or for the local routing table. .TP \fBEINVAL\fP Przypisano niewłaściwy argument. W przypadku operacji wysyłania może to być spowodowane przez wysyłanie drogą przypisaną do \fIczarnej dziury\fP. .TP \fBEISCONN\fP \fBconnect\fP(2) była wywołana na już połączonym gnieździe. .TP \fBEMSGSIZE\fP Datagram jest większy niż wartość MTU po drodze do celu i nie może być podzielony. .TP \fBENOBUFS\fP, \fBENOMEM\fP Niewystarczająca ilość dostępnej pamięci. Często oznacza to, że przydzielanie pamięci jest ograniczone przez ograniczenia bufora gniazda, a nie przez ograniczenia pamięci systemowej. Jednak nie jest to pewne na 100%. .TP \fBENOENT\fP \fBSIOCGSTAMP\fP było wywołane na gnieździe, do którego nie dotarł żaden pakiet. .TP \fBENOPKG\fP Podsystem jądra nie był konfigurowany. .TP \fBENOPROTOOPT\fP i \fBEOPNOTSUPP\fP Przypisano niewłaściwą opcję gniazda. .TP \fBENOTCONN\fP Operacja może być wykonana tylko na połączonym gnieździe, a gniazdo nie zostało połączone. .TP \fBEPERM\fP Użytkownik nie ma praw do ustawiania wysokiego priorytetu, zmiany konfiguracji lub wysyłania sygnałów do żądanych procesów lub grup procesów. .TP \fBEPIPE\fP Połączenie zostało nieoczekiwanie zamknięte lub wyłączył się drugi koniec. .TP \fBESOCKTNOSUPPORT\fP Gniazdo nie jest skonfigurowane lub zażądano nieznanego typu gniazda. .PP Inne błędy mogą być generowane przez protokoły wyższych warstw; obejrzyj \fBtcp\fP(7), \fBraw\fP(7), \fBudp\fP(7) i \fBsocket\fP(7). .SH UWAGI .\" IP_XFRM_POLICY is Linux-specific .\" IP_IPSEC_POLICY is a nonstandard extension, also present on some BSDs \fBIP_FREEBIND\fP, \fBIP_MSFILTER\fP, \fBIP_MTU\fP, \fBIP_MTU_DISCOVER\fP, \fBIP_RECVORIGDSTADDR\fP, \fBIP_PASSSEC\fP, \fBIP_PKTINFO\fP, \fBIP_RECVERR\fP, \fBIP_ROUTER_ALERT\fP, and \fBIP_TRANSPARENT\fP are Linux\-specific. .PP Należy być bardzo ostrożnym przy stosowaniu opcji \fBSO_BROADCAST\fP \- nie jest ona w systemie Linux uprzywilejowana, jest więc łatwo przeciążyć sieć za pomocą niedbale użytych rozgłoszeń. W przypadku protokołów nowych aplikacji lepiej używać grupy adresowej zamiast rozgłoszeń. Stosowanie adresów rozgłoszeniowych jest niezalecane. .PP Niektóre inne implementacje gniazd BSD dopuszczają dla gniazd opcje \fBIP_RCVDSTADDR\fP i \fBIP_RECVIF\fP używane do pobierania adresu przeznaczenia i interfejsu odbieranych datagramów. Linux udostępnia bardziej ogólną opcję \fBIP_PKTINFO\fP, robiącą to samo. .PP Niektóre implementacja gniazd BSD także udostępniają opcję \fBIP_RECVTTL\fP, ale łącznie z przychodzącym pakietem jest przekazywany pomocniczy komunikat o typie \fBIP_RECVTTL\fP. W tym właśnie różni się to od opcji \fBIP_TTL\fP, używanej w Linuksie. .PP Using the \fBSOL_IP\fP socket options level isn't portable; BSD\-based stacks use the \fBIPPROTO_IP\fP level. .PP \fBINADDR_ANY\fP (0.0.0.0) and \fBINADDR_BROADCAST\fP (255.255.255.255) are byte\-order\-neutral. This means \fBhtonl\fP(3) has no effect on them. .SS Zgodność Dla zgodności z Linuksem 2.0, wciąż jest dopuszczalna przestarzała składnia \fBsocket(AF_INET, SOCK_PACKET, \fP\fIprotokół\fP\fB)\fP, by stworzyć gniazdo typu \fBpacket\fP(7). Nie jest to zbyt poprawne i powinno być zastępowane przez \fBsocket(AF_PACKET, SOCK_RAW, \fP\fIprotokół\fP\fB)\fP. Głównym powodem jest różnica w strukturze adresowej \fIsockaddr_ll\fP przechowującej informacje dla warstwy łącza (dokładniej: warstwy kanałowej), które kiedyś przechowywane były w \fBsockaddr_pkt\fP. .SH BŁĘDY Jest zbyt wiele nieokreślonych wartości błędów. .PP Błąd używany do zdiagnozowania wyczerpania się zakresu portów efemerycznych różni się między poszczególnymi wywołaniami systemowymi (\fBconnect\fP(2), \fBbind\fP(2), \fBlisten\fP(2), \fBsendto\fP(2)), które przypisują porty efemeryczne. .PP .\" .PP .\" Some versions of glibc forget to declare .\" .IR in_pktinfo . .\" Workaround currently is to copy it into your program from this man page. Nie są opisane kontrolki wejścia/wyjścia do konfigurowania specyficznych dla IP opcji interfejsu i tabele ARP. .PP .\" .SH AUTHORS .\" This man page was written by Andi Kleen. Pobieranie pierwotnego adresu docelowego za pomocą wywołania \fBrecvmsg\fP(2) z \fBMSG_ERRQUEUE\fP w \fImsg_name\fP nie działa w niektórych jądrach 2.2. .SH "ZOBACZ TAKŻE" \fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBbyteorder\fP(3), \fBcapabilities\fP(7), \fBicmp\fP(7), \fBipv6\fP(7), \fBnetdevice\fP(7), \fBnetlink\fP(7), \fBraw\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7), \fBip\fP(8) .PP The kernel source file \fIDocumentation/networking/ip\-sysctl.txt\fP. .PP RFC\ 791 \- oryginalny opis IP. RFC\ 1122 \- wymagania stacji IPv4. RFC\ 1812 \- wymagania rutera IPv4. .SH "O STRONIE" Angielska wersja tej strony pochodzi z wydania 5.10 projektu Linux \fIman\-pages\fP. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem \%https://www.kernel.org/doc/man\-pages/. .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Paweł Wilk , Robert Luberda i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .