DOKK / manpages / debian 10 / manpages-pl-dev / freehostent.3.pl
getipnodebyname(3) Podręcznik programisty Linuksa getipnodebyname(3)

getipnodebyname, getipnodebyaddr, freehostent - określenie nazw i adresów sieciowych hosta

#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

struct hostent *getipnodebyname(const char *name,
                         int af, int flags,
                         int *error_num);

struct hostent *getipnodebyaddr(const void *addr,
                         size_t len, int af,
                         int *error_num);

void freehostent(struct hostent *ip);

Uwaga! To tłumaczenie może być nieaktualne!

Te funkcje są przestarzałe. Zamiast nich należy używać getaddrinfo(3) i getnameinfo(3).

Funkcje getipnodebyname(3) i getipnodebyaddr(3) zwracają nazwy i adresy hosta sieciowego. Wynik jest wskaźnikiem do struktury o następującej postaci:

struct hostent {
        char    *h_name;
        char    **h_aliases;
        int     h_addrtype;
        int     h_length;
        char    **h_addr_list;
};

Funkcje te zastąpiły funkcje gethostbyname(3) i gethostbyaddr(3), które mogły udostępniać jedynie adresy należące do rodziny adresów sieciowych IPv4. Funkcje getipnodebyname(3) i getipnodebyaddr(3) mogą udostępniać adresy należące do wielu rodzin adresów sieciowych.

W odróżnieniu od funkcji gethostby, funkcje te zwracają wskaźniki do pamięci przydzielonej dynamicznie. Funkcja freehostent(3) służy do zwalniania przydzielonej dynamicznie pamięci, gdy wywołujący już nie potrzebuje struktury hostent.

Funkcja getipnodebyname(3) wyszukuje adresy sieciowe hosta podanego w parametrze name. Parametr af może zawierać jedną z następujących wartości:

Parametr name wskazuje na adres IPv4 (w postaci czterech rozdzielonych kropkami liczb) lub na nazwę hosta sieci IPv4.
Parametr name wskazuje na adres IPv6 (w postaci szesnastkowej) lub na nazwę hosta sieci IPv6.

Parametr flags zawiera dodatkowe opcje. Można podać więcej niż jedną opcję poprzez wykonanie na nich logicznego OR. flags powinno być ustawione na 0, gdy żadne opcje nie są potrzebne.

Ten znacznik użyty łącznie z AF_INET6 określa, że zapytanie ma dotyczyć adresów IPv4, a nie IPv6; adresy IPv4 będą odwzorowane na adresy IPv6.
Ten znacznik użyty łącznie z AI_V4MAPPED określa, że zapytanie ma dotyczyć zarówno adresów IPv4, jak i IPv6. Znalezione adresy IPv4 zostaną odwzorowane na adresy IPv6.
Ten znacznik użyty łącznie z AF_INET6 oznacza, że dalsze zapytania dotyczące adresów IPv6 nie powinny być wykonywane, jeżeli system nie posiada adresu IPv6 przydzielonego do któregoś z interfejsów sieciowych oraz, że dalsze zapytania dotyczące adresów IPv4 nie powinny być wykonywane, jeżeli system nie posiada adresu IPv4 przydzielonego do któregoś z interfejsów sieciowych. Znacznik ten może zostać użyty samodzielnie lub łącznie ze znacznikiem AI_V4MAPPED.
Ten znacznik jest równoważny (AI_ADDRCONFIG | AI_V4MAPPED).

Funkcja getipnodebyaddr(3) poszukuje nazwy hista, którego adres sieciowy jest podany w parametrze addr. Parametr af może mieć jedną z następujących wartości:

Parametr addr wskazuje na strukturę struct in_addr; len musi mieć wówczas wartość sizeof(struct in_addr).
Parametr addr wskazuje na strukturę struct in6_addr; len musi mieć wówczas wartość sizeof(struct in6_addr).

Gdy wystąpi błąd, zwrócony zostanie wskaźnik NULL a error_num będzie zawierać kod błędu według następującej listy:

Nie znaleziono nazwy lub adresu sieciowego hosta.
Serwer DNS rozpoznał adres sieciowy lub nazwę hosta, ale nie zwrócił odpowiedzi. Może się to zdarzyć, gdy host posiada jedynie adresy IPv4, a zapytanie dotyczyło jedynie informacji o IPv6, lub odwrotnie.
Serwer DNS zwrócił błąd trwały.
Serwer DNS zwrócił błąd tymczasowy. Może następnym razem bedzie więcej szczęścia.

W przypadku pomyślnego wyniku zapytania zwraca ny jest wskaźnik do struktury hostent zawierającej następujące pola:

Oficjalna nazwa tego hosta.
Tablica wskaźników do nieoficjalnych aliasów tego samego hosta. Tablica jest zakończona wskaźnikiem NULL.
Kopia parametru af funkcji getipnodebyname(3) lub getipnodebyaddr(3). h_addrtype będzie równe AF_INET, gdy parametr af był równy AF_INET. h_addrtype będzie równe AF_INET6, gdy parametr af był równy AF_INET6.
Będzie równe sizeof(struct in_addr), gdy h_addrtype jest równe AF_INET a sizeof(struct in6_addr), gdy h_addrtype jest równe AF_INET6.
Tablica zawierająca jeden lub więcej wskaźników do struktur adresów sieciowych danego hosta. Tablica jest zakończona wskaźnikiem NULL.

Funkcje te były obecne w glibc 2.1.91-95, ale zostały ponownie usunięte. Wspierają je niektóre systemy uniksopodobne, lecz wszystkie traktują te funkcje jako niezalecane.

RFC 2553.

getaddrinfo(3), getnameinfo(3), inet_ntop(3), inet_pton(3)

Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:

man --locale=C 3 getipnodebyname

Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.

2002-04-03 Linux