VMCI Sockets Programming Guide - ws8 - Esx5 - Vmci - Sockets PDF
VMCI Sockets Programming Guide - ws8 - Esx5 - Vmci - Sockets PDF
VMCI Sockets Programming Guide - ws8 - Esx5 - Vmci - Sockets PDF
This document supports the version of each product listed and supports all subsequent versions until the document is replaced by a new edition. To check for more recent editions of this document, see http://www.vmware.com/support/pubs.
EN-000611-02
You can find the most up-to-date technical documentation on the VMware Web site at: http://www.vmware.com/support/ The VMware Web site also provides the latest product updates. If you have comments about this documentation, submit your feedback to: docfeedback@vmware.com
Copyright 20082011 VMware, Inc. All rights reserved. This product is protected by U.S. and international copyright and intellectual property laws. VMware products are covered by one or more patents listed at http://www.vmware.com/go/patents. VMware is a registered trademark or trademark of VMware, Inc. in the United States and/or other jurisdictions. All other marks and names mentioned herein may be trademarks of their respective companies.
VMware, Inc.
Contents
AboutThisBook
1 AboutVMCISockets 7
IntroductiontoVMCISockets 7 PreviousVMCIReleases 7 HowVMCISocketsWork 7 PersistenceofSockets 8 SocketProgramming 8 FeaturesinSpecificVMwareReleases 8 EnablingandFindingVMCISockets 8 EnablingVMCIBetweenVirtualMachines 8 LocationofIncludeFileforCPrograms 9 UseCasesforVMCISockets 9 WebAccesswithStreamVMCISockets 9 NetworkStoragewithDatagramVMCISockets 10
2 PortingtoVMCISockets 11
PortingExistingSocketApplications 11 IncludeaNewHeaderFile 11 ChangeAF_INETtoVMCISockets 11 ObtaintheCID 11 TheVMCISock_GetLocalCID()Function 11 ConnectionOrientedStreamSocket 12 ConnectionlessDatagramSocket 12 InitializingtheAddressStructure 12 CommunicatingBetweenHostandGuest 12 VMCISocketsandNetworking 12 SettingUpaNetworklessGuest 12
3 CreatingStreamVMCISockets 13
StreamVMCISockets 13 PreparingtheServerforaConnection 14 Socket()Function 14 SetandGetSocketOptions 14 Bind()Function 15 Listen()Function 15 Accept()Function 15 Select()Function 15 Recv()Function 16 Send()Function 16 Close()Function 16 Poll()Information 16 Read()andWrite() 16 Getsockname()Function 16 HavingtheClientRequestaConnection 17 Socket()Function 17 Connect()Function 17 Send()Function 17
VMware, Inc. 3
4 CreatingDatagramVMCISockets 19
DatagramVMCISockets 19 PreparingtheServerforaConnection 20 Socket()Function 20 SocketOptions 20 Bind()Function 20 Getsockname()Function 21 Recvfrom()Function 21 Sendto()Function 21 Close()Function 21 HavingtheClientRequestaConnection 21 Socket()Function 21 Sendto()Function 22 Connect()andSend() 22 Recvfrom()Function 22 Close()Function 22
5 SecurityoftheVMCIDevice 23
InterfacesforVMCISettings 23 VMCIDeviceAlwaysEnabled 23 VMCIandHardwareVersion 23 IsolationOptionsinVMX 24 Authentication 24 IsolationofVirtualMachines 24 IsolationinWorkstation 24 IsolationinESX/ESXi 25 IsolationofVMCISockets 25
Appendix:LearningMoreAboutSockets 27
AboutBerkeleySocketsandWinsock 27 TradePressBooks 27 BerkeleySockets 27 MicrosoftWinsock 28 ShortIntroductiontoSockets 28 SocketAddresses 28 Socket()SystemCall 28 Bind()SystemCall 28 Listen()SystemCall 29 Accept()SystemCall 29 Connect()SystemCall 29 SocketReadandWrite 30
Index 31
VMware, Inc.
Revision History
VMwarerevisesthisguidewitheachreleaseoftheproductorwhennecessary.Arevisedversioncancontain minorormajorchanges.Table 1summarizesthesignificantchangesineachversionofthisguide. Table 1. Revision History
Revision 20120105 20110720 20100521 20091020 20090515 20080815 20080620 Description WindowsheaderfilenowinProgramFiles\CommonFiles\VMware\Drivers\vmci\sockets\include. ManualrevisedfortheWorkstation8.0releaseandfortheESXi5.0release. ManualrevisedfortheWorkstation7.1releaseandforESX/ESXi4.xreleases. ManualrevisedslightlyfortheWorkstation7.0release. Revisedmanual,includinghosttogueststreamsocketsupport,fortheESX/ESXi4.0release. Releasedmanual,withsocketoptions,forVMwareWorkstation6.5andVMwareServer2.0products. DraftofthismanualfortheVMwareWorkstation6.5Beta2andVMwareServer2.0RC1releases.
Intended Audience
ThismanualisintendedforprogrammerswhoaredevelopingapplicationsusingVMCIsocketstocreate C or C++networkingapplicationsforguestoperatingsystemsrunningonVMwarehosts.VMCIsocketsare basedonTCPsockets. ThisguideassumesthatyouarefamiliarwithBerkeleysocketsorWinsock,theWindowsimplementationof sockets.Ifyouarenotfamiliarwithsockets,Appendix:LearningMoreAboutSocketsonpage 27provides pointerstolearningresources.
Document Feedback
VMwarewelcomesyoursuggestionsforimprovingourdocumentationandsearchtools.Sendyourfeedback todocfeedback@vmware.com.
VMware, Inc.
Support Offerings
TofindouthowVMwaresupportofferingscanhelpmeetyourbusinessneeds,goto http://www.vmware.com/support/services.
VMware, Inc.
Thischapterincludesthefollowingtopics:
VMware, Inc.
Persistence of Sockets
VMCIsocketsloseconnectionaftersuspendandresumeofavirtualmachine. InVMwarevSpherewithESX/ESXihostsandvCenterServer,VMCIsocketsdonotsurvivelivemigrationwith VMwarevMotionfromsourcetodestinationhost.InVMwarevSpherewithESX/ESXihosts,VMCIstream socketconnectionsaredroppedwhenavirtualmachineisputintofaulttolerance(FT)mode.NonewVMCI streamsocketconnectionscanbeestablishedwhileavirtualmachineisinFTmode.
Socket Programming
Ifyouhaveexistingsocketbasedapplications,onlyafewcodechangesarerequiredforVMCIsockets.Ifyou donothavesocketbasedapplications,youcaneasilyfindpublicdomaincodeontheWeb.Forexample, ApacheandFirefox,asshowninFigure 11,VMwareHostswithStreamVMCISocketsinGuests,onpage 9, usestreamsocketsandareopensource. RepurposinganetworkingprogramtouseVMCIsocketsrequiresminimaleffort,becauseVMCIsockets behaveliketraditionalInternetsocketsonagivenplatform.However,somesocketoptionsdonotmakesense forcommunicationacrosstheVMCIdevice,sotheyaresilentlyignoredtopromoteprogramportability. Modificationisstraightforward.Youincludeaheaderfile,changetheprotocoladdressfamily,andallocatea newdatastructure.OtherwiseVMCIsocketsusethesameAPIasBerkeleysocketsorWindowssockets.See PortingExistingSocketApplicationsonpage 11foradescriptionofthemodificationsneeded.
VMware, Inc.
IE 7
Apache TCP/IP
Firefox
VMware, Inc.
10
VMware, Inc.
Thischapterincludesthefollowingtopics:
PortingExistingSocketApplicationsonpage 11 CommunicatingBetweenHostandGuestonpage 12
VMware, Inc.
11
12
VMware, Inc.
ThischapterdescribesthedetailsofcreatingVMCIsocketstoreplaceTCPstreamsockets.
PreparingtheServerforaConnectiononpage 14 HavingtheClientRequestaConnectiononpage 17
bind()
listen()
Client
socket()
accept() context ID wait for client connection connect() select() establish connection
send()
recv()
close()
VMware, Inc.
13
TocompileonWindows,youmustalsocalltheWinsockWSAStartup()function.
err = WSAStartup(versionRequested, &wsaData); if (err != 0) { printf(stderr, "Could not register with Winsock DLL.\n"); goto cleanup; }
ThisisnotnecessaryonnonWindowssystems.
Socket() Function
InaVMCIsocketsapplication,obtainthenewaddressfamily(domain)toreplaceAF_INET.
int afVMCI = VMCISock_GetAFValue(); if ((sockfd = socket(afVMCI, SOCK_STREAM, 0)) == -1) { perror("socket"); goto cleanup; }
VMCISock_GetAFValue()returnsadescriptorfortheVMCIsocketsaddressfamilyifavailable.
14
VMware, Inc.
Bind() Function
Thisbind()callassociatesthestreamsocketwiththenetworksettingsinthesockaddr_vmstructure,instead ofthesockaddr_instructure.
struct sockaddr_vm my_addr = {0}; my_addr.svm_family = afVMCI; my_addr.svm_cid = VMADDR_CID_ANY; my_addr.svm_port = VMADDR_PORT_ANY; if (bind(sockfd, (struct sockaddr *) &my_addr, sizeof my_addr) == -1) { perror("bind"); goto close; }
Listen() Function
Thelisten()callpreparestoacceptincomingclientconnections.TheBACKLOGmacropredefinesthenumber ofincomingconnectionrequeststhatthesystemacceptsbeforerejectingnewones.Thisfunctionisthesame aslisten()inaregularTCPsocketsapplication.
if (listen(sockfd, BACKLOG) == -1) { perror("listen"); goto close; }
Accept() Function
Theaccept()callwaitsindefinitelyforanincomingconnectiontoarrive,creatinganewsocket(andstream descriptornewfd)whenitdoes.Thestructuretheir_addrgetsfilledwithconnectioninformation.
struct sockaddr_vm their_addr; socklen_t their_addr_len = sizeof their_addr; if ((newfd = accept(sockfd, (struct sockaddr *) &their_addr, &their_addr_len)) == -1) { perror("accept"); goto close; }
Select() Function
Theselect()callenablesaprocesstowaitforeventsonmultiplefiledescriptorssimultaneously.This functionhibernates,wakinguptheprocesswhenaneventoccurs.Youcanspecifyatimeoutinsecondsor microseconds.Aftertimeout,thefunctionreturnszero.Youcanspecifytheread,write,andexceptionfile descriptorsasNULLiftheprogramcansafelyignorethem.
if ((select(nfds, &readfd, &writefds, &exceptfds, &timeout) == -1) { perror("select"); goto close; }
VMware, Inc.
15
Recv() Function
Therecv()callreadsdatafromtheclientapplication.Theserverandclientcancommunicatethelengthof datatransmitted,ortheservercanterminateitsrecv()loopwhentheclientclosesitsconnection.
char recv_buf[BUFSIZE]; if ((numbytes = recv(sockfd, recv_buf, sizeof recv_buf, 0)) == -1) { perror("recv"); goto close; }
Send() Function
Thesend()callwritesdatatotheclientapplication.Serverandclientmustcommunicatethelengthofdata transmitted,oragreebeforehandonasize.Oftentheserversendsonlyflowcontrolinformationtotheclient.
char send_buf[BUFSIZE]; if ((numbytes = send(newfd, send_buf, sizeof send_buf, 0)) == -1) { perror("send"); goto close; }
Close() Function
Giventheoriginalsocketdescriptorobtainedfromthesocket()call,theclose()callclosesthesocketand terminatestheconnectionifitisstillopen.Someserverapplicationscloseimmediatelyafterreceivingclient data,whileotherswaitforadditionalconnections.TocompileonWindows,youmustcalltheWinsock closesocket()insteadofclose().
#ifdef _WIN32 return closesocket(sockfd); #else return close(sockfd); #endif
Theshutdown()functionislikeclose(),butshutsdowntheconnection.
Poll() Information
Notallsocketbasednetworkingprogramsusepoll(),butiftheydo,nochangesarerequired.Thepoll() functionislikeselect().SeeSelect()Functiononpage 15forrelatedinformation.
Getsockname() Function
Thegetsockname()functionretrievesthelocaladdressassociatedwithasocket.
my_addr_size = sizeof my_addr; if (getsockname(sockfd, (struct sockaddr *) &my_addr, &my_addr_size) == -1) { perror("getsockname"); goto close; }
16
VMware, Inc.
Socket() Function
InaVMCIsocketsapplication,obtainthenewaddressfamily(domain)toreplaceAF_INET.
int afVMCI = VMCISock_GetAFValue(); if ((sockfd = socket(afVMCI, SOCK_STREAM, 0)) == -1) { perror("socket"); goto exit; }
VMCISock_GetAFValue()returnsadescriptorfortheVMCIsocketsaddressfamilyifavailable.
Connect() Function
Theconnect()callrequestsasocketconnectiontotheserverspecifiedbyCIDinthesockaddr_vmstructure, insteadofbytheIPaddressinthesockaddr_instructure.
struct sockaddr_vm their_addr = {0}; their_addr.svm_family = afVMCI; their_addr.svm_cid = SERVER_CID; their_addr.svm_port = SERVER_PORT; if ((connect(sockfd, (struct sockaddr *) &their_addr, sizeof their_addr)) == -1) { perror("connect"); goto close; }
Send() Function
Thesend()callwritesdatatotheserverapplication.Theclientandservercancommunicatethelengthofdata transmitted,ortheservercanterminateitsrecv()loopwhentheclientclosesitsconnection.
char send_buf[BUFSIZE]; /* Initialize send_buf with your data. */ if ((numbytes = send(sockfd, send_buf, sizeof send_buf, 0)) == -1) { perror("send"); goto close; }
VMware, Inc.
17
Recv() Function
Therecv()callreadsdatafromtheserverapplication.Sometimestheserversendsflowcontrolinformation, sotheclientmustbepreparedtoreceiveit.Usethesamesocketdescriptorasforsend().
char recv_buf[BUFSIZE]; if ((numbytes = recv(sockfd, recv_buf, sizeof recv_buf, 0)) == -1) { perror("recv"); goto close; }
Close() Function
Theclose()callshutsdownaconnection,giventheoriginalsocketdescriptorobtainedfromthesocket() function.TocompileonWindows,youmustcalltheWinsockclosesocket()insteadofclose().
#ifdef _WIN32 return closesocket(sockfd); #else return close(sockfd); #endif
Poll() Information
Notallsocketbasednetworkingprogramsusepoll(),butiftheydo,nochangesarerequired.
18
VMware, Inc.
ThischapterdescribesthedetailsofcreatingVMCIsocketstoreplaceUDPsockets.
PreparingtheServerforaConnectiononpage 20 HavingtheClientRequestaConnectiononpage 21
bind()
Client
socket()
recvfrom() context ID wait for client datagram sendto() transmit data loop sendto() reply to data close() close() recvfrom()
InUDPsockets,theserverwaitsfortheclienttotransmit,andacceptsdatagrams.InVMCIsockets,theserver andclientcommunicatesimilarlywithdatagrams.
VMware, Inc.
19
TocompileonWindows,youmustcalltheWinsockWSAStartup()function.
err = WSAStartup(versionRequested, &wsaData); if (err != 0) { printf(stderr, "Could not register with Winsock DLL.\n"); goto exit; }
ThisisnotnecessaryonnonWindowssystems.
Socket() Function
ToalteraUDPsocketprogramforVMCIsockets,obtainthenewaddressfamilytoreplaceAF_INET.
int afVMCI = VMCISock_GetAFValue(); if ((sockfd_dgram = socket(afVMCI, SOCK_DGRAM, 0)) == -1) { perror("socket"); goto exit; }
VMCISock_GetAFValue()returnsadescriptorfortheVMCIsocketsaddressfamilyifavailable. Thiscallissimilartotheoneforstreamsockets,buthasSOCK_DGRAMinsteadofSOCK_STREAM.
Socket Options
CurrentlyVMCIsocketsoffersnooptionsfordatagramconnections.
Bind() Function
Thebind()callassociatesthedatagramsocketwiththenetworksettingsinthesockaddr_vmstructure, insteadofthesockaddr_instructure.
struct sockaddr_vm my_addr = {0}; my_addr.svm_family = afVMCI; my_addr.svm_cid = VMADDR_CID_ANY; my_addr.svm_port = VMADDR_PORT_ANY; if (bind(sockfd, (struct sockaddr *) &my_addr, sizeof my_addr) == -1) { perror("bind"); goto close; }
20
VMware, Inc.
Getsockname() Function
Thegetsockname()functionretrievesthelocaladdressassociatedwithasocket.
my_addr_size = sizeof my_addr; if (getsockname(sockfd, (struct sockaddr *) &my_addr, &my_addr_size) == -1) { perror("getsockname"); goto close; }
Recvfrom() Function
Therecvfrom()callreadsdatafromtheclientapplication.Serverandclientcancommunicatethelengthof datatransmitted,ortheservercanterminateitsrecvfrom()loopwhentheclientclosesitsconnection.
if ((numbytes = recvfrom(sockfd, buf, sizeof buf, 0, (struct sockaddr *) &their_addr, &my_addr_size)) == -1) { perror("recvfrom"); goto close; }
Sendto() Function
Thesendto()calloptionallywritesdatabacktotheclientapplication.SeeSendto()Functiononpage 22.
Close() Function
Theclose()callshutsdowntransmission,giventheoriginalsocketdescriptorobtainedfromthesocket() call.Someserverapplicationscloseimmediatelyafterreceivingclientdata,whileotherswaitforadditional connections.TocompileonWindows,youmustcalltheWinsockclosesocket()insteadofclose().
#ifdef _WIN32 return closesocket(sockfd); #else return close(sockfd); #endif
Socket() Function
ToalteraUDPsocketprogramforVMCIsockets,obtainthenewaddressfamilytoreplaceAF_INET.
int afVMCI = VMCISock_GetAFValue(); if ((sockfd = socket(afVMCI, SOCK_DGRAM, 0)) == -1) { perror("socket"); goto exit; }
VMware, Inc.
21
Sendto() Function
Becausethisisaconnectionlessprotocol,youpassthesocketaddressstructuretheir_addrasaparameterto thesendto()call.
struct sockaddr_vm their_addr = {0}; their_addr.svm_family = afVMCI; their_addr.svm_cid = SERVER_CID; their_addr.svm_port = SERVER_PORT; if ((numbytes = sendto(sockfd, buf, BUFIZE, 0, (struct sockaddr *) &their_addr, sizeof their_addr)) == -1) { perror("sendto"); goto close; }
Recvfrom() Function
Therecvfrom()calloptionallyreadsdatafromtheserverapplication.SeeRecvfrom()Functiononpage 21.
Close() Function
Theclose()callshutsdownaconnection,giventheoriginalsocketdescriptorobtainedfromthesocket() function.TocompileonWindows,calltheWinsockclosesocket(),asshowninClose()Functionon page 21.
22
VMware, Inc.
ThischapterprovidesbackgroundinformationaboutsecurityoftheVMCIdevice,especiallyaboutinterfaces thatarenotpartofthepublicVMCISocketsAPI.VMCISocketsareimplementedontopoftheVMCIdevice.
ClickEditSettings>Hardware>ShowAllDevices>VMCIdevice>EnableVMCIbetweenVMs.
ClickSettings>Options>GuestIsolation>EnableVMCI.
(ESX/ESXionly)Bydefault,allvirtualmachinesandhostapplicationsaremembersofthedefaultdomain ("")nullstring.Ifthevmci0.domainoptionspecifiesanondefaultdomain,thenthevirtualmachinecan communicateonlywiththehypervisorand(untilfeatureremoval)othervirtualmachinesinthesame domain.Thevirtualmachineisisolatedfromothervirtualmachineswithadifferentdomainname. Therestrictedoptionoverridesthedomainoption,soarestrictedvirtualmachinecannotcommunicatewith othervirtualmachineseveninthesamedomain. NOTEThepurposeoftheVMCIdomainistoorganizevirtualmachinesintogroupsthatcancommunicate witheachother,butnotwithvirtualmachinesoutsidethegroup.SinceguesttoguestVMCIcommunications aredeprecatedintheESXi5.0release,thedomainsettingwillcontinuetoworkinESXi5.0updates,butasof thenextESXirelease,thedomainsettingwillbeignored. Configuredforrestrictedcommunication,theVMCIdevicehasasecurityprofilesimilartoanyotherdevice suchaskeyboard,videomonitor,mouse,ormotherboard. Inunrestrictedmode,theVMCIdevicecancommunicatewithallothernonrestrictedVMCIdevicesonthe samehost,includinghostapplications.ThenatureoftheVMCIcommunicationdependsonthetypeofVMCI applicationsrunningonthehostssvirtualmachines.VMCIinitselfdoesnotexposeanyguestinformation.
Authentication
AllVMCIcommunicationsareauthenticated.Thesource(contextID)maynotbespoofed.TheVMCIfacility implicitlyauthenticatesanyhypervisorserviceasbeingpartofthetrustedcodebase.VMCIdoesnotprovide finegrainedauthenticationofcommunicationendpoints,soapplicationsmustdealwithfinegrained authenticationasaseparateissue.ItistheresponsibilityofapplicationsrunningontopofVMCItoimplement theirownauthenticationmechanismsifnecessary.VMCIensuresonlythatmalicioussoftwarecannotspoof thesourcefieldinVMCIdatagramsidentifyingthesendingvirtualmachine.
Isolation in Workstation
Whenavirtualmachineismarkedasisolated,itisonlyallowedto:
Interactwithhypervisorservices(contextID=0).ThisallowsuseofVMwareToolswithoutanyproblems evenforanisolatedvirtualmachine.
Avirtualmachinemarkedasisolatedisnotallowedto:
Interactwithothervirtualmachines.
24
VMware, Inc.
Isolation in ESX/ESXi
ESX/ESXi4.0andlatersupporttheabilitytohaveseveralgroupsofvirtualmachinesperphysicalhost,where avirtualmachinecanseeonlythevirtualmachinesthatareamemberofthesamegroup.Thegroupsofvirtual machinesarenothierarchicalandmaynotoverlap. EachhostcanbelongtooneormoreVMCIdomains.AvirtualmachineassignedtoagivenVMCIdomaincan seeothervirtualmachineswithinthesamedomain,andthehypervisorcontext.BydefaultthereisoneVMCI domainperhost,andallvirtualmachinesarepartofthisdomain.ContextIDsmustbeuniqueacrossall domainsonahost.TheVMCIdomainsarespecifiedinthe.vmxfileofavirtualmachinenouserinterfaceis providedtomanageVMCIdomains. AnisolatedvirtualmachineislikeavirtualmachineinaVMCIdomainbyitself,withaccessonlytotrusted hypervisorservices. Ifavirtualmachineismarkedasisolated,ithasthesamerestrictionsaslistedaboveforWorkstation.
VMware, Inc.
25
26
VMware, Inc.
ThisappendixintroducesInternetsocketsandprovidespointerstofurtherinformation.
AboutBerkeleySocketsandWinsockonpage 27 ShortIntroductiontoSocketsonpage 28
Berkeley Sockets
WikipediaoffersanexcellentoverviewofthehistoryanddesignofBerkeleysockets. ForreferenceinformationaboutBerkeleysockets,locateaLinuxsystemwithmanualpagesinstalled,andtype mansocket.Youshouldbeabletofindbothsocket(2)andsocket(7)referencepages.
VMware, Inc.
27
Microsoft Winsock
TheWinsockProgrammersFAQisanexcellentintroductiontoWindowssockets.Currentlyitishostedbythe http://tangentsoft.netWebsite. ForcompletereferenceinformationaboutWinsock,refertothepublicMSDNWebsite.
Socket Addresses
Thesocketaddressspecifiesthecommunicationfamily.UNIXdomainsocketsaredefinedassockaddr_un. Internetdomainsocketsaredefinedassockaddr_inorsockaddr_in6forIPv6.
struct sockaddr_in short u_short struct in_addr char }; { sin_family; sin_port; sin_addr; sin_zero[8]; /* /* /* /* AF_INET */ port number */ Internet address */ unused */
Thesocket()systemcallreturnsthesocketdescriptor,asmallintegerthatissimilartothefiledescriptorused inothersystemcalls.Forexample:
#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int sockfd; sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
28
VMware, Inc.
Forexample:
listen(sockfd, 5);
VMware, Inc.
30
VMware, Inc.
Index
A
about VMCI sockets 7 accept() 15 address structure for sockets 12 AF_INET and PF_INET 27 AF_INET and VMCI sockets 11 afVMCI from VMCISock_GetAFValue() 12, 14, 15, 17 Apache and Firefox VMCI sockets 9
P
PF_INET and AF_INET 27 poll() 16, 18 port number, VMADDR_PORT_ANY 12, 15 porting sockets applications 11
R
read() 16, 18 recv() 16, 18 recvfrom() 21 release contents 8
B
bind() 12, 15, 20 books about sockets 27
S
select() 15 send() 16, 17 sendto() 21, 22 setsockopt() 14 SO_VMCI_BUFFER_SIZE 14 SOCK_DGRAM 12 socket() 12, 14, 17, 20, 21 stream VMCI sockets 13
C
close() 16, 18, 21 connect() 17 connectionless socket 12 connection-oriented socket 12 context ID (CID) summary 11 context ID, VMADDR_CID_ANY 12, 15
D
datagram VMCI sockets 19
T
technical support resources 6
E
ESX/ESXi support for VMCI 8
U
use cases for VMCI sockets 9
F
Firefox and Apache VMCI sockets 9 flowchart of datagram sockets 19 flowchart of stream sockets 13
V
VMCI library deprecated 7 VMCISock_GetAFValue() 14, 17, 20 VMCISock_GetLocalCID() 11, 15, 20
G
getsockname() 16, 21 getsockopt() 14 guest to host and guest to guest 8, 12
W
Web resources about sockets 27 write() 16, 18 WSAStartup() 14, 17, 20
H
hidden information about sockets 27 host to guest and guest to guest 8, 12
L
listen() 15
N
NFS and datagram VMCI sockets 10
VMware, Inc.
31
32
VMware, Inc.