ddp(7)

NUME
ddp - implementarea protocolului Linux AppleTalk

SINOPSIS
#include <sys/socket.h>
#include <netatalk/at.h>

ddp_socket = socket(AF_APPLETALK, SOCK_DGRAM, 0);
raw_socket = socket(AF_APPLETALK, SOCK_RAW, protocol);

DESCRIERE
Linux implementează protocoalele AppleTalk descrise în Inside AppleTalk. Doar stratul DDP și AARP sunt prezente în nucleu. Acestea sunt concepute pentru a fi utilizate prin intermediul bibliotecilor de protocol netatalk. Această pagină documentează interfața pentru cei care doresc sau trebuie să utilizeze direct stratul DDP.

Comunicarea dintre AppleTalk și programul utilizatorului funcționează folosind o interfață de soclu compatibilă cu BSD. Pentru mai multe informații despre socluri, consultați socket(7).

Un soclu AppleTalk este creat prin apelarea funcției socket(2) cu un argument al familiei de socluri AF_APPLETALK. Tipurile de soclu valide sunt SOCK_DGRAM pentru a deschide un soclu ddp sau SOCK_RAW pentru a deschide un soclu raw. protocol este protocolul AppleTalk care urmează să fie primit sau trimis. Pentru SOCK_RAW trebuie să specificați ATPROTO_DDP.

Soclurile raw (brute) pot fi deschise numai de un proces cu ID utilizator efectiv 0 sau atunci când procesul are capacitatea CAP_NET_RAW.

  Formatul adreselor
O adresă de soclu AppleTalk este definită ca o combinație a unui număr de rețea, a unui număr de nod și a unui număr de port.

    struct at_addr {
        unsigned short s_net;
        unsigned char  s_node;
    };

    struct sockaddr_atalk {
        sa_family_t    sat_family;    /* familia de adrese */
        unsigned char  sat_port;      /* port */
        struct at_addr sat_addr;      /* rețea / nod */
    };

sat_family este întotdeauna definit la AF_APPLETALK. sat_port conține portul. Numerele de porturi sub 129 sunt cunoscute ca porturi rezervate. Numai procesele cu ID utilizator efectiv 0 sau cu capacitatea CAP_NET_BIND_SERVICE pot efectua bind(2) la aceste socluri. sat_addr este adresa gazdei. Membrul net al struct at_addr conține rețeaua gazdă în ordinea octeților de rețea. Membrul node al struct at_addr conține numărul nodului gazdei, iar valoarea lui AT_ANYNET este un caracter joker și implică, de asemenea, „această rețea”. Valoarea lui AT_ANYNODE este un caracter joker și implică, de asemenea, „acest nod”. Valoarea lui ATADDR_BCAST este o adresă de difuzare locală a legăturii.

  Opțiuni de soclu
Nu sunt acceptate opțiuni de soclu specifice protocolului.

  Interfețe „/proc”
IP acceptă un set de interfețe /proc pentru a configura anumiți parametri AppleTalk globali. Parametrii pot fi accesați prin citirea sau scrierea de fișiere în directorul /proc/sys/net/atalk/.

aarp-expiry-time
    Intervalul de timp (în secunde) înainte ca o intrare din cache AARP să expire.

aarp-resolve-time
    Intervalul de timp (în secunde) înainte ca o intrare din cache AARP să fie rezolvată.

aarp-retransmit-limit
    Numărul de retransmisiuni ale unei interogări AARP înainte ca nodul să fie declarat mort.

aarp-tick-time
    Rata temporizatorului (în secunde) pentru temporizatorul care controlează AARP.

Valorile implicite corespund specificațiilor și nu ar trebui să fie modificate niciodată.

  Ioctl-uri
Toate ioctl-urile descrise în socket(7) se aplică la DDP.

ERORI-IEȘIRE

EACCES
    Utilizatorul a încercat să execute o operație fără permisiunile necesare. Printre acestea se numără trimiterea la o adresă de difuzare fără ca fanionul de difuzare să fie activat și încercarea de conectare la un port rezervat fără ID utilizator efectiv 0 sau CAP_NET_BIND_SERVICE.

EADDRINUSE
    A încercat să se conecteze la o adresă deja utilizată.

EADDRNOTAVAIL
    A fost solicitată o interfață inexistentă sau adresa sursă solicitată nu era locală.

EAGAIN
    Operația pe un soclu care nu blochează se va bloca.

EALREADY
    O operație de conectare pe un soclu care nu blochează este deja în curs de desfășurare.

ECONNABORTED
    O conexiune a fost închisă în timpul unui apel la accept(2).

EHOSTUNREACH
    Nicio intrare din tabelul de direcționare nu corespunde adresei de destinație.

EINVAL
    S-a furnizat un argument nevalid.

EISCONN
    connect(2) a fost apelat pe un soclu deja conectat.

EMSGSIZE
    Datagrama este mai mare decât MTU-ul DDP.

ENODEV
    Dispozitivul de rețea nu este disponibil sau nu poate trimite IP.

ENOENT
    SIOCGSTAMP a fost apelat pe un soclu unde nu a sosit niciun pachet.

ENOMEM și ENOBUFS
    Nu există suficientă memorie disponibilă.

ENOPKG
    Un subsistem de nucleu nu a fost configurat.

ENOPROTOOPT și EOPNOTSUPP
    Opțiunea de soclu pasată nu este validă.

ENOTCONN
    Operația este definită numai pe un soclu conectat, dar soclul nu era conectat.

EPERM
    Utilizatorul nu are permisiunea de a stabili o prioritate ridicată, de a efectua o modificare a configurației sau de a trimite semnale către procesul sau grupul solicitat.

EPIPE
    Conexiunea a fost închisă sau întreruptă în mod neașteptat de celălalt capăt.

ESOCKTNOSUPPORT
    Soclul nu a fost configurat sau a fost solicitat un tip de soclu necunoscut.

VERSIUNI
AppleTalk este acceptat de Linux 2.0 sau o versiune ulterioară. Interfețele /proc există începând cu Linux 2.2.

NOTE
Fiți foarte atenți cu opțiunea SO_BROADCAST; aceasta nu este privilegiată în Linux. Este ușor să supraîncărcați rețeaua prin trimiterea neglijentă la adrese de difuzare.

  Compatibilitate
Interfața de bază pentru soclu AppleTalk este compatibilă cu netatalk pe sistemele derivate din BSD. Multe sisteme BSD nu verifică SO_BROADCAST atunci când trimit cadre de difuzare; acest lucru poate duce la probleme de compatibilitate.

Modul de soclu brut este unic pentru Linux și există pentru a oferi suport mai ușor pachetului alternativ CAP și instrumentelor de monitorizare AppleTalk.

ERORI
Există prea multe valori de eroare inconsecvente.

Ioctl-urile utilizate pentru a configura tabelele de rutare, dispozitivele, tabelele AARP și alte dispozitive nu sunt încă descrise.

CONSULTAȚI ȘI
recvmsg(2), sendmsg(2), capabilities(7), socket(7)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.