table of contents
- bookworm-backports 4.26.3.1-3~bpo12+1
- testing 4.26.3.1-3
- unstable 4.27.0-1
ddp(7) | Miscellaneous Information Manual | 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¶
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 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.
5 februarie 2023 | Pagini de manual de Linux 6.03 |