.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2018, Stefan Hajnoczi .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH vsock 7 "2 mai 2024" "Pagini de manual de Linux 6.9.1" .SH NUME vsock \- familia de adrese Linux VSOCK .SH SINOPSIS .nf \fB#include \fP \fB#include \fP .P \fIstream_socket\fP\fB = socket(AF_VSOCK, SOCK_STREAM, 0);\fP \fIdatagram_socket\fP\fB = socket(AF_VSOCK, SOCK_DGRAM, 0);\fP .fi .SH DESCRIERE Familia de adrese VSOCK facilitează comunicarea între mașinile virtuale și gazda pe care rulează. Această familie de adrese este utilizată de agenții invitați și de serviciile hipervizorului care au nevoie de un canal de comunicare independent de configurația rețelei mașinilor virtuale. .P Tipurile de soclu valide sunt \fBSOCK_STREAM\fP și \fBSOCK_DGRAM\fP. \fBSOCK_STREAM\fP oferă fluxuri de octeți orientate spre conexiune cu livrare garantată, în ordine. \fBSOCK_DGRAM\fP oferă un serviciu de pachete de datagrame fără conexiune, cu livrare și ordonare cu cel mai puțin\-efort. Disponibilitatea acestor tipuri de soclu depinde de hipervizorul de subiacent. .P Un nou socket este creat cu .P .in +4n .EX socket(AF_VSOCK, socket_type, 0); .EE .in .P Când un proces dorește să stabilească o conexiune, acesta apelează \fBconnect\fP(2) cu o anumită adresă de soclu de destinație. Soclul este asociat în mod automat unui port liber, dacă nu este asociat. .P Un proces poate asculta conexiunile primite, mai întâi conectându\-se la o adresă de soclu folosind \fBbind\fP(2) și apoi apelând \fBlisten\fP(2). .P Datele sunt transmise cu ajutorul familiilor de apeluri de sistem \fBsend\fP(2) sau \fBwrite\fP(2), iar datele sunt primite cu ajutorul familiilor de apeluri de sistem \fBrecv\fP(2) sau \fBread\fP(2). .SS "Formatul adreselor" O adresă de soclu este definită ca o combinație între un identificator de context („Context Identifier”: CID) pe 32 de biți și un număr de port pe 32 de biți. CID\-ul identifică sursa sau destinația, care este fie o mașină virtuală, fie o gazdă. Numărul portului face diferența între mai multe servicii care rulează pe o singură mașină. .P .in +4n .EX struct sockaddr_vm { sa_family_t svm_family; /* Familia de adrese: AF_VSOCK */ unsigned short svm_reserved1; unsigned int svm_port; /* Numărul portului în ordinea octeților gazdei */ unsigned int svm_cid; /* Adresa în ordinea octeților gazdei */ unsigned char svm_zero[sizeof(struct sockaddr) \- sizeof(sa_family_t) \- sizeof(unsigned short) \- sizeof(unsigned int) \- sizeof(unsigned int)]; }; .EE .in .P \fIsvm_family\fP este întotdeauna stabilit la \fBAF_VSOCK\fP. \fIsvm_reserved1\fP este întotdeauna stabilit la 0. \fIsvm_port\fP conține numărul portului în ordinea octeților gazdă. Numerele de port mai mici de 1024 se numesc \fIporturi privilegiate\fP. Numai un proces cu capacitatea \fBCAP_NET_BIND_SERVICE\fP poate efectua \fBbind\fP(2) la aceste numere de port. \fIsvm_zero\fP trebuie să fie umplut cu zerouri. .P Există mai multe adrese speciale: \fBVMADDR_CID_ANY\fP (\-1U) înseamnă orice adresă pentru conectare; \fBVMADDR_CID_HYPERVISOR\fP (0) este rezervată pentru serviciile integrate în hipervizor; \fBVMADDR_CID_LOCAL\fP (1) este adresa bine cunoscută pentru comunicarea locală (loopback); \fBVMADDR_CID_HOST\fP (2) este adresa bine cunoscută a gazdei. .P Constanta specială \fBVMADDR_PORT_ANY\fP (\-1U) înseamnă orice număr de port pentru asociere. .SS "Migrare la cald" Soclurile sunt afectate de migrarea la cald a mașinilor virtuale. Soclurile \fBSOCK_STREAM\fP conectate se deconectează atunci când mașina virtuală migrează către o nouă gazdă. Aplicațiile trebuie să se reconecteze atunci când se întâmplă acest lucru. .P CID\-ul local se poate schimba în timpul migrației la cald dacă vechiul CID nu este disponibil pe noua gazdă. Soclurile asociate sunt actualizate automat la noul CID. .SS Ioctl\-uri Următoarele ioctl\-uri sunt disponibile pe dispozitivul \fI/dev/vsock\fP. .TP \fBIOCTL_VM_SOCKETS_GET_LOCAL_CID\fP Obține CID\-ul mașinii locale. Argumentul este un indicator către un \fIunsigned int\fP. .IP .in +4n .EX ioctl(fd, IOCTL_VM_SOCKETS_GET_LOCAL_CID, &cid); .EE .in .IP Luați în considerare utilizarea \fBVMADDR_CID_ANY\fP atunci când vă conectați în loc să obțineți CID\-ul local cu \fBIOCTL_VM_SOCKETS_GET_LOCAL_CID\fP. .SS "Comunicarea locală" \fBVMADDR_CID_LOCAL\fP (1) direcționează pachetele către aceeași gazdă care le\-a generat. Acest lucru este util pentru testarea aplicațiilor pe o singură gazdă și pentru depanare. .P CID\-ul local obținut cu \fBIOCTL_VM_SOCKETS_GET_LOCAL_CID\fP poate fi utilizat în același scop, dar este preferabil să se utilizeze \fBVMADDR_CID_LOCAL\fP. .SH ERORI\-IEȘIRE .TP \fBEACCES\fP Nu se poate face conectarea la un port privilegiat fără capacitatea \fBCAP_NET_BIND_SERVICE\fP. .TP \fBEADDRINUSE\fP Nu se poate face conectarea la un port care este deja utilizat. .TP \fBEADDRNOTAVAIL\fP Nu se poate găsi un port liber pentru conectare sau nu se poate conecta la un CID nelocal. .TP \fBEINVAL\fP Parametrii nevalabili. Aceasta include: încercarea de a asocia un soclu care este deja asociat, furnizarea unei structuri \fIsockaddr_vm\fP nevalide și alte erori de validare a datelor de intrare. .TP \fBENOPROTOOPT\fP Opțiune de soclu nevalidă în \fBsetsockopt\fP(2) sau \fBgetsockopt\fP(2). .TP \fBENOTCONN\fP Nu se poate efectua o operație pe un soclu neconectat. .TP \fBEOPNOTSUPP\fP Operația nu este acceptată. Aceasta include: fanionul \fBMSG_OOB\fP care nu este implementat pentru familia de apeluri de sistem \fBsend\fP(2) și \fBMSG_PEEK\fP pentru familia de apeluri de sistem \fBrecv\fP(2). .TP \fBEPROTONOSUPPORT\fP Număr de protocol de soclu nevalid. Protocolul trebuie să fie întotdeauna 0. .TP \fBESOCKTNOSUPPORT\fP Tip de soclu neacceptat în \fBsocket\fP(2). Numai \fBSOCK_STREAM\fP și \fBSOCK_DGRAM\fP sunt valabile. .SH VERSIUNI Suportul pentru VMware (VMCI) a fost disponibil începând cu Linux 3.9. KVM (virtio) este disponibil începând cu Linux 4.8. Hyper\-V este disponibil începând cu Linux 4.14. .P .\" commit ef343b35d46667668a099655fca4a5b2e43a5dfe \fBVMADDR_CID_LOCAL\fP este disponibil începând cu Linux 5.6. Comunicarea locală în invitat și pe gazdă este disponibilă începând cu Linux 5.6. Versiunile anterioare ofereau suport numai pentru comunicarea locală în cadrul unui oaspete (nu și pe gazdă) și numai cu anumite transporturi (VMCI și virtio). .SH "CONSULTAȚI ȘI" \fBbind\fP(2), \fBconnect\fP(2), \fBlisten\fP(2), \fBrecv\fP(2), \fBsend\fP(2), \fBsocket\fP(2), \fBcapabilities\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .