Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
p6net.h
Go to the documentation of this file.
1 
9 #ifndef P6NET_H__
10 #define P6NET_H__ 1
11 
12 #include "p6err.h"
13 #include "p6runtimeif.h"
14 #include "p6log.h"
15 #include "p6thread.h"
16 #include "p6runtimeapi.h"
17 #include "p6compif.h"
18 #include "p6keystore.h"
19 #include "p6iobuffer.h"
21 namespace P6R {
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
28 const SHUTDOWNFLAGS SDF_SEND = 0x00000001;
29 const SHUTDOWNFLAGS SDF_RECV = 0x00000002;
30 const SHUTDOWNFLAGS SDF_BOTH = SDF_SEND|SDF_RECV;
31 
33 const P6INADDR P6INADDR_ANY = 0;
34 const P6INADDR P6INADDR_LOOPBACK = 0x7f000001;
35 const P6INADDR P6INADDR_BROADCAST= (P6UINT32)0xffffffff;
36 
41 typedef struct {
43 } P6NETALIAS;
44 
53 {
54  P6COMMETHOD next(P6R::P6UINT32 cElements,P6R::P6NETADDR *parElements,P6R::P6UINT32 *pcReturned) = 0;
55  P6COMMETHOD reset() = 0;
56 };
57 
58 // {9BD24E32-5116-4D37-9FF3-2CADBBC949D5}
59 #define IF_p6IEnumAddrs {0x9BD24E32,0x5116,0x4D37,{0x9F,0xF3,0x2C,0xAD,0xBB,0xC9,0x49,0xD5}}
60 
70 {
71  P6COMMETHOD next(P6R::P6UINT32 cElements,P6R::P6NETALIAS *parElements,P6R::P6UINT32 *pcReturned) = 0;
72  P6COMMETHOD reset() = 0;
73 };
74 
75 // {02370101-1D65-4946-BBAE-5F4D712F06E1}
76 #define IF_p6IEnumAliases {0x02370101,0x1D65,0x4946,{0xBB,0xAE,0x5F,0x4D,0x71,0x2F,0x06,0xE1}}
77 
88 {
102  P6COMMETHOD getName(P6R::P6CHAR *pBuffer,P6UINT32 *pcBuffer) = 0;
103 
113  P6COMMETHOD getType(P6R::P6INT32 *pAddrType) = 0;
114 
124  P6COMMETHOD enumAliases(p6IEnumAliases **ppEnum) = 0;
125 
135  P6COMMETHOD enumAddresses(p6IEnumAddrs **ppEnum) = 0;
136 };
137 // {47544238-7574-41FD-8600-05AFE2781EFB}
138 #define IF_p6IHostent {0x47544238,0x7574,0x41FD,{0x86,0x00,0x05,0xAF,0xE2,0x78,0x1E,0xFB}}
139 
150 {
162  P6COMMETHOD getName(P6R::P6CHAR *pBuffer,P6UINT32 *pcBuffer) = 0;
163 
173  P6COMMETHOD enumAliases(p6IEnumAliases **ppEnum) = 0;
174 
182  P6COMMETHOD getProto(P6R::P6UINT16 *pnProto) = 0;
183 };
184 // {5CF4F86A-1548-4605-8B31-78737D4F9C4A}
185 #define IF_p6IProtoent {0x5CF4F86A,0x1548,0x4605,{0x8B,0x31,0x78,0x73,0x7D,0x4F,0x9C,0x4A}}
186 
196 {
209  P6COMMETHOD getName(P6R::P6CHAR *pBuffer,P6R::P6UINT32 *pcBuffer) = 0;
210 
221 
229  P6COMMETHOD getPort(P6R::P6UINT16 *pnPort) = 0;
230 
243  P6COMMETHOD getProto(P6R::P6CHAR *pBuffer,P6R::P6UINT32 *pcBuffer) = 0;
244 };
245 // {BAE7A477-E898-419A-BD53-85EC14D8CC9D}
246 #define IF_p6IServent {0xBAE7A477,0xE898,0x419A,{0xBD,0x53,0x85,0xEC,0x14,0xD8,0xCC,0x9D}}
247 
249 const P6IFFLAGS P6IFF_NONE = 0x00000000;
250 const P6IFFLAGS P6IFF_UP = 0x00000001;
251 const P6IFFLAGS P6IFF_BROADCAST = 0x00000002;
252 const P6IFFLAGS P6IFF_MULTICAST = 0x00000004;
253 const P6IFFLAGS P6IFF_LOOPBACK = 0x00000008;
254 const P6IFFLAGS P6IFF_POINT2POINT = 0x00000010;
255 
256 typedef struct {
257  P6IFFLAGS m_flags;
258  P6NETADDR m_ip;
259  P6NETADDR m_broadcast;
260  P6NETADDR m_netmask;
261  P6CHAR m_hostname[P6MAXHOSTNAME];
262 } P6IFACEINFO;
264 {
265  P6COMMETHOD next(P6R::P6UINT32 cElements,P6R::P6IFACEINFO *parElements,P6R::P6UINT32 *pcReturned) = 0;
266  P6COMMETHOD reset() = 0;
267 };
268 
269 // {94583D57-54A0-48BD-8E84-CFCF37313B19}
270 #define IF_p6IEnumInterfaces {0x94583D57,0x54A0,0x48BD,{0x8E,0x84,0xCF,0xCF,0x37,0x31,0x3B,0x19}}
271 
272 interface p6INetdb : p6ICom
273 {
274  P6COMMETHOD initialize() = 0;
275 
276  P6COMMETHOD enumInterfaces(P6R::P6ADDRFAM nFamily,P6R::p6IEnumInterfaces **ppEnum) = 0;
277 
291  P6COMMETHOD getHostByName(const P6R::P6CHAR *pszHostname,P6R::P6NETADDR *pAddr) = 0;
292 
307  P6COMMETHOD getHostByNameW(const P6R::P6WCHAR *pszHostname,P6R::P6NETADDR *pAddr) = 0;
308 
321  P6COMMETHOD getHostByName2(const P6R::P6CHAR *pszHostname,P6R::p6IHostent **ppEnt) = 0;
322 
336  P6COMMETHOD getHostByName2W(const P6R::P6WCHAR *pszHostname,P6R::p6IHostent **ppEnt) = 0;
337 
348  P6COMMETHOD getHostByAddr(const P6R::P6NETADDR *pInAddr,P6R::p6IHostent **ppEnt) = 0;
349 
358  P6COMMETHOD getHostname(P6R::P6CHAR *pBuffer,P6R::P6UINT32 cBuffer) = 0;
359 
368  P6COMMETHOD getHostnameW(P6R::P6WCHAR *pBuffer,P6R::P6UINT32 cBuffer) = 0;
369 
380  P6COMMETHOD getProtoByName(const P6R::P6CHAR *pszName,P6R::p6IProtoent **ppEnt) = 0;
381 
392  P6COMMETHOD getProtoByNameW(const P6R::P6WCHAR *pszName,P6R::p6IProtoent **ppEnt) = 0;
393 
405 
420  P6COMMETHOD getServByName(const P6R::P6CHAR *pszName,const P6R::P6CHAR *pszProto,P6R::p6IServent **ppEnt) = 0;
421 
436  P6COMMETHOD getServByNameW(const P6R::P6WCHAR *pszName,const P6R::P6WCHAR *pszProto,P6R::p6IServent **ppEnt) = 0;
437 
451  P6COMMETHOD getServByPort(P6R::P6UINT16 nPort,const P6R::P6CHAR *pszProto,P6R::p6IServent **ppEnt) = 0;
452 
467  P6COMMETHOD getServByPortW(P6R::P6UINT16 nPort,const P6R::P6WCHAR *pszProto,P6R::p6IServent **ppEnt) = 0;
468 };
469 // {0012BE20-541C-4850-9CDB-12AF652238B2}
470 #define IF_p6INetdb {0x0012BE20,0x541C,0x4850,{0x9C,0xDB,0x12,0xAF,0x65,0x22,0x38,0xB2}}
471 // {5E836E31-910E-47e2-ABC5-C08BB531FC50}
472 #define COMP_p6Netdb {0x5E836E31,0x910E,0x47e2,{0xAB,0xC5,0xC0,0x8B,0xB5,0x31,0xFC,0x50}}
473 
474 
481 {
495  P6COMMETHOD ipTOS(P6R::P6BOOL bSet,P6R::P6UINT16 *pTOS) = 0;
496 
497 
498  P6COMMETHOD ipTTL(P6R::P6BOOL bSet,P6R::P6UINT16 *pTTL) = 0;
499  P6COMMETHOD mcastDropGroup(P6R::P6NETADDR *pmcastAddr,P6R::P6NETADDR *pLocalAddr) = 0;
500  P6COMMETHOD mcastIF(P6R::P6BOOL bSet,P6R::P6NETADDR *pLocalAddr) = 0;
501  P6COMMETHOD mcastJoinGroup(P6R::P6NETADDR *pmcastAddr,P6R::P6NETADDR *pLocalAddr) = 0;
502  P6COMMETHOD mcastLoopback(P6R::P6BOOL bSet,P6R::P6BOOL *pbEnable) = 0;
504  P6COMMETHOD soKeepAlive(P6R::P6BOOL bSet,P6R::P6BOOL *pbEnable) = 0;
505  P6COMMETHOD soLinger(P6R::P6BOOL bSet,P6R::P6BOOL *pbEnable,P6R::P6INTERVAL *ptLinger) = 0;
506  P6COMMETHOD soNonBlock(P6R::P6BOOL bSet,P6R::P6BOOL *pbEnable) = 0;
508  P6COMMETHOD soReuseAddr(P6R::P6BOOL bSet,P6R::P6BOOL *pbReuse) = 0;
511 
524  P6COMMETHOD tcpNoDelay(P6R::P6BOOL bSet,P6R::P6BOOL *pbEnable) = 0;
525 };
526 // {980583C5-F272-4c9f-A703-6010F6550A9A}
527 #define IF_p6ISocketOptions {0x980583C5,0xF272,0x4c9f,{0xA7,0x03,0x60,0x10,0xF6,0x55,0x0A,0x9A}}
528 
530 static const P6R::P6SOCKFLAGS P6SF_NONE = 0x00000000;
531 static const P6R::P6SOCKFLAGS P6SF_CTLMASK = 0x0000FFFF;
532 static const P6R::P6SOCKFLAGS P6SF_ASYNC = 0x00000001;
533 static const P6R::P6SOCKFLAGS P6SF_SECURESSL = 0x00000002;
534 static const P6R::P6SOCKFLAGS P6SF_LOGPACKETS = 0x00000004;
535 static const P6R::P6SOCKFLAGS P6SF_STATEMASK = 0xFFFF0000;
536 static const P6R::P6SOCKFLAGS P6SF_LISTENING = 0x80000000;
537 
539 static const P6R::P6SECURESOCKETFLAGS P6SSF_NONE = 0x00000000;
540 static const P6R::P6SECURESOCKETFLAGS P6SSF_METHOD_MASK = 0x0000001f;
541 static const P6R::P6SECURESOCKETFLAGS P6SSF_METHOD_SSLV2 = 0x00000001;
542 static const P6R::P6SECURESOCKETFLAGS P6SSF_METHOD_SSLV3 = 0x00000002;
543 static const P6R::P6SECURESOCKETFLAGS P6SSF_METHOD_SSLV23 = 0x00000004;
544 static const P6R::P6SECURESOCKETFLAGS P6SSF_METHOD_TLS1 = 0x00000008;
545 static const P6R::P6SECURESOCKETFLAGS P6SSF_METHOD_TLS1_1 = 0x00000010;
546 static const P6R::P6SECURESOCKETFLAGS P6SSF_TYPE_MASK = 0x000000d0;
547 static const P6R::P6SECURESOCKETFLAGS P6SSF_SECURE_CLIENT = 0x00000020;
548 static const P6R::P6SECURESOCKETFLAGS P6SSF_SECURE_CLIENT_AUTH = 0x00000040;
549 static const P6R::P6SECURESOCKETFLAGS P6SSF_SECURE_SERVER = 0x00000080;
550 static const P6R::P6SECURESOCKETFLAGS P6SSF_VRFY_MASK = 0x00001f00;
551 static const P6R::P6SECURESOCKETFLAGS P6SSF_VRFY_DISABLEALL = 0x00000100;
552 static const P6R::P6SECURESOCKETFLAGS P6SSF_VRFY_DISABLEHOSTMATCH = 0x00000200;
553 static const P6R::P6SECURESOCKETFLAGS P6SSF_VRFY_DISABLEWILDCARD = 0x00000400;
554 static const P6R::P6SECURESOCKETFLAGS P6SSF_VRFY_DISABLEEXPIRED = 0x00000800;
555 static const P6R::P6SECURESOCKETFLAGS P6SSF_VRFY_SUBJECTALWAYS = 0x00001000;
557 static const P6R::P6SECURESOCKETFLAGS P6SSF_LOG_X509SUBJECTLOOKUPS = 0x80000000;
558 static const P6R::P6SECURESOCKETFLAGS P6SSF_LOG_SSLDEBUG = 0x40000000;
559 static const P6R::P6SECURESOCKETFLAGS P6SSF_LOG_RECORDS = 0x20000000;
566 interface p6IUdpSocket : p6ICom
567 {
568 
579  P6COMMETHOD initialize(P6R::P6ADDRFAM af,P6R::P6SOCKFLAGS fFlags) = 0;
580 
592  P6COMMETHOD getID(P6R::P6SIZE *pHandle) = 0;
593 
602  P6COMMETHOD bind(P6R::P6NETADDR *pLocalAddr) = 0;
603 
626  P6COMMETHOD connect(P6R::P6NETADDR *pRemoteAddr,P6R::P6INTERVAL timeout) = 0;
627 
639  P6COMMETHOD recv(P6R::P6UINT8 *pBuffer,P6R::P6UINT32 cBuffer,P6R::P6UINT32 *pcBytesRead,P6R::P6INTERVAL timeout) = 0;
640 
662  P6COMMETHOD recvFrom(P6R::P6UINT8 *pBuffer,P6R::P6UINT32 cBuffer,P6R::P6UINT32 *pcBytesRead,P6R::P6INTERVAL timeout,P6R::P6NETADDR *pRemoteAddr) = 0;
663 
684  P6COMMETHOD send(P6R::P6UINT8 *pBuffer,P6R::P6UINT32 cBuffer,P6R::P6UINT32 *pcBytesSent,P6R::P6INTERVAL timeout) = 0;
685 
700  P6COMMETHOD sendTo(P6R::P6UINT8 *pBuffer,P6R::P6UINT32 cBuffer,P6R::P6UINT32 *pcBytesSent,P6R::P6INTERVAL timeout,P6R::P6NETADDR *pRemoteAddr) = 0;
701 
716  P6COMMETHOD getLocalAddr(P6R::P6NETADDR *pLocalAddr) = 0;
717 
727  P6COMMETHOD getPeerAddr(P6R::P6NETADDR *pPeerAddr) = 0;
728 
737  P6COMMETHOD getFlags(P6R::P6SOCKFLAGS *pfFlags) = 0;
738 };
739 // {77D29B06-2E8C-4aeb-99CF-1D64CAC03856}
740 #define IF_p6IUdpSocket {0x77D29B06,0x2E8C,0x4aeb,{0x99,0xCF,0x1D,0x64,0xCA,0xC0,0x38,0x56}}
741 // {B111E23D-5F72-4e5e-9795-DCD99474403C}
742 #define COMP_p6UdpSocket {0xB111E23D,0x5F72,0x4e5e,{0x97,0x95,0xDC,0xD9,0x94,0x74,0x40,0x3C}}
743 
745 {
809  P6COMMETHOD initSecureSocket(P6R::p6IKeystore *pKeystore,P6R::p6IIoBufferFactory *pFactory,const P6R::P6WCHAR *pszHostname,const P6R::P6WCHAR *pszCiphers,P6R::P6SECURESOCKETFLAGS fSecureFlags) = 0;
810 
811 
826  //P6COMMETHOD getCiphers() = 0;
827 };
828 
829 // {BC3BA5EB-41C8-4A34-B180-D85EF5A1E204}
830 #define IF_p6ITcpSecureSocket {0xBC3BA5EB,0x41C8,0x4A34,{0xB1,0x80,0xD8,0x5E,0xF5,0xA1,0xE2,0x04}}
831 
836 interface p6ITcpSocket : p6ICom
837 {
851  P6COMMETHOD initialize(P6R::P6ADDRFAM af,P6R::P6SOCKFLAGS fFlags) = 0;
852 
873  P6COMMETHOD accept(P6R::P6NETADDR *pAddr,P6R::P6INTERVAL timeout,P6R::p6ITcpSocket **ppSocket) = 0;
874 
883  P6COMMETHOD bind(P6R::P6NETADDR *pLocalAddr) = 0;
884 
908  P6COMMETHOD connect(P6R::P6NETADDR *pRemoteAddr,P6R::P6INTERVAL timeout) = 0;
909 
921  P6COMMETHOD getID(P6R::P6SIZE *pHandle) = 0;
922 
934  P6COMMETHOD recv(P6R::P6UINT8 *pBuffer,P6R::P6UINT32 cBuffer,P6R::P6UINT32 *pcBytesRead,P6R::P6INTERVAL timeout) = 0;
935 
936 
951  P6COMMETHOD recvIoBuffer(P6R::p6IIoBuffer *pIoBuffer,P6R::P6UINT32 *pcBytesRead,P6R::P6INTERVAL timeout) = 0;
952 
964  P6COMMETHOD listen(P6R::P6INT32 cBacklog) = 0;
965 
977 
1001  P6COMMETHOD send(P6R::P6UINT8 *pBuffer,P6R::P6UINT32 cBuffer,P6R::P6UINT32 *pcBytesSent,P6R::P6INTERVAL timeout) = 0;
1002 
1030  P6COMMETHOD sendIoBuffer(P6R::p6IIoBuffer *pIoBuffer,P6R::P6UINT32 *pcBytesSent,P6R::P6INTERVAL timeout) = 0;
1031 
1045  P6COMMETHOD getLocalAddr(P6R::P6NETADDR *pLocalAddr) = 0;
1046 
1056  P6COMMETHOD getPeerAddr(P6R::P6NETADDR *pPeerAddr) = 0;
1057 
1066  P6COMMETHOD getFlags(P6R::P6SOCKFLAGS *pfFlags) = 0;
1067 };
1068 // {0D205C9D-27BE-4dd8-885D-0C089D2DC491}
1069 #define IF_p6ITcpSocket {0x0D205C9D,0x27BE,0x4dd8,{0x88,0x5D,0x0C,0x08,0x9D,0x2D,0xC4,0x91}}
1070 // {57B33148-AF90-495a-9A9E-7ACD77B94ABE}
1071 #define COMP_p6TcpSocket {0x57B33148,0xAF90,0x495a,{0x9A,0x9E,0x7A,0xCD,0x77,0xB9,0x4A,0xBE}}
1072 
1073 
1075 static const P6SOCKFACTORYFLAGS P6SFF_NOFLAGS = 0x00000000;
1076 static const P6SOCKFACTORYFLAGS P6SFF_SECURESSL = 0x00000002;
1079 {
1089  P6COMMETHOD createServerSocket(P6R::P6SOCKFACTORYFLAGS fFlags,const P6R::P6NETADDR *pBindAddr,P6R::p6ITcpSocket **ppSocket) = 0;
1090  P6COMMETHOD createServerSocket2(P6R::P6SOCKFACTORYFLAGS fFlags,const P6R::P6CHAR *pszBindAddrStr,P6R::p6ITcpSocket **ppSocket) = 0;
1091 
1093  P6COMMETHOD createClientSocket(P6R::P6SOCKFACTORYFLAGS fFlags,const P6R::P6NETADDR *pBindAddr,P6R::p6ITcpSocket **ppSocket) = 0;
1094  P6COMMETHOD createClientSocket2(P6R::P6SOCKFACTORYFLAGS fFlags,const P6R::P6CHAR *pszBindAddrStr,P6R::p6ITcpSocket **ppSocket) = 0;
1095 };
1096 
1097 // {47F73495-AE0E-4542-9A7A-D20B1B067649}
1098 #define IF_p6ISocketFactory {0x47F73495,0xAE0E,0x4542,{0x9A,0x7A,0xD2,0x0B,0x1B,0x06,0x76,0x49}}
1099 
1100 // {C8806A3E-9CFE-43F3-97CE-E577B9E86BB6}
1101 #define COMP_p6SocketFactory {0xC8806A3E,0x9CFE,0x43F3,{0x97,0xCE,0xE5,0x77,0xB9,0xE8,0x6B,0xB6}}
1102 
1103 #ifdef __cplusplus
1104 }
1105 #endif
1106 
1107 } // namespace
1108 
1109 #endif
1110 
virtual P6R::P6ERR soSendBuf(P6R::P6BOOL bSet, P6R::P6UINT32 *pSize)=0
P6IFFLAGS m_flags
Definition: p6net.h:257
virtual P6R::P6ERR soLinger(P6R::P6BOOL bSet, P6R::P6BOOL *pbEnable, P6R::P6INTERVAL *ptLinger)=0
size_t P6SIZE
Definition: p6types.h:62
virtual P6R::P6ERR createClientSocket2(P6R::P6SOCKFACTORYFLAGS fFlags, const P6R::P6CHAR *pszBindAddrStr, P6R::p6ITcpSocket **ppSocket)=0
virtual P6R::P6ERR send(P6R::P6UINT8 *pBuffer, P6R::P6UINT32 cBuffer, P6R::P6UINT32 *pcBytesSent, P6R::P6INTERVAL timeout)=0
This method is used to send a datagram on a connected socket.
P6UINT32 P6IFFLAGS
Definition: p6net.h:248
P6NETADDR m_ip
Definition: p6net.h:258
This interface allows the caller to find an existing key, certificate, or blob (e.g., password) by a namespace and name pair.
Definition: p6keystore.h:646
virtual P6R::P6ERR getServByPort(P6R::P6UINT16 nPort, const P6R::P6CHAR *pszProto, P6R::p6IServent **ppEnt)=0
Retreieves service information that corresponds with the specified service port.
virtual P6R::P6ERR soReuseAddr(P6R::P6BOOL bSet, P6R::P6BOOL *pbReuse)=0
virtual P6R::P6ERR sendIoBuffer(P6R::p6IIoBuffer *pIoBuffer, P6R::P6UINT32 *pcBytesSent, P6R::P6INTERVAL timeout)=0
This method is used to send data contained in an p6IIoBuffer on a connected socket.
unsigned int P6UINT32
Definition: p6types.h:40
UDP socket interface.
Definition: p6net.h:566
Threading interfaces and definitions.
P6R's keystore component to manage keys, certificates, and blobs.
virtual P6R::P6ERR next(P6R::P6UINT32 cElements, P6R::P6NETADDR *parElements, P6R::P6UINT32 *pcReturned)=0
I/O Buffer Interfaces.
virtual P6R::P6ERR getProto(P6R::P6CHAR *pBuffer, P6R::P6UINT32 *pcBuffer)=0
Retrieves the name of the protocol to use when contacting this service.
virtual P6R::P6ERR recvIoBuffer(P6R::p6IIoBuffer *pIoBuffer, P6R::P6UINT32 *pcBytesRead, P6R::P6INTERVAL timeout)=0
Given an previsouly allocated p6IIoBuffer, this method receives data from the specified socket which ...
virtual P6R::P6ERR shutdown(P6R::SHUTDOWNFLAGS fFlags)=0
Notifies the TCP stack to begin shutdown of the socket in the direction(s) specified by the fFlags ar...
virtual P6R::P6ERR initialize()=0
Standard error codes.
virtual P6R::P6ERR mcastTTL(P6R::P6BOOL bSet, P6R::P6UINT16 *pTTL)=0
virtual P6R::P6ERR getHostByName(const P6R::P6CHAR *pszHostname, P6R::P6NETADDR *pAddr)=0
Retrieves host address information for the host specified in pszHostname.
This interface is used to enumerate addresses returned from methods (eg.
Definition: p6net.h:52
bool P6BOOL
Boolean type.
Definition: p6types.h:101
virtual P6R::P6ERR getName(P6R::P6CHAR *pBuffer, P6UINT32 *pcBuffer)=0
Retrieves the official protocol name.
virtual P6R::P6ERR getHostname(P6R::P6CHAR *pBuffer, P6R::P6UINT32 cBuffer)=0
Retrieves the hostname of the local machine.
virtual P6R::P6ERR reset()=0
This factory interface is responsible for creating and managing memory pooled Io Buffers (p6IIoBuffer...
Definition: p6iobuffer.h:595
virtual P6R::P6ERR getNegotiatedCipher(P6R::P6WCHAR *pBuffer, P6R::P6SIZE cBuffer)=0
Returns a description of the cipher that was negotiated for the current connection.
virtual P6R::P6ERR initialize(P6R::P6ADDRFAM af, P6R::P6SOCKFLAGS fFlags)=0
Initializes the UDP socket component.
virtual P6R::P6ERR initialize(P6R::P6ADDRFAM af, P6R::P6SOCKFLAGS fFlags)=0
Initializes the instance for use and must be called prior to calling any other method on the interfac...
virtual P6R::P6ERR ipTTL(P6R::P6BOOL bSet, P6R::P6UINT16 *pTTL)=0
This structure is used to hold alias strings returned by enumertators like p6IEnumAliases.
Definition: p6net.h:41
virtual P6R::P6ERR listen(P6R::P6INT32 cBacklog)=0
Places the socket in a state where it listens for incomming connections.
virtual P6R::P6ERR getHostByName2W(const P6R::P6WCHAR *pszHostname, P6R::p6IHostent **ppEnt)=0
Retrieves host information for the host specified in pszHostname.
virtual P6R::P6ERR mcastIF(P6R::P6BOOL bSet, P6R::P6NETADDR *pLocalAddr)=0
P6UINT32 SHUTDOWNFLAGS
Definition: p6net.h:27
virtual P6R::P6ERR enumAddresses(p6IEnumAddrs **ppEnum)=0
Retrieves an enumeration interface that will allow the hosts addresses to be enumerated.
virtual P6R::P6ERR getServByPortW(P6R::P6UINT16 nPort, const P6R::P6WCHAR *pszProto, P6R::p6IServent **ppEnt)=0
Retreieves service information that corresponds with the specified service port.
const SHUTDOWNFLAGS SDF_RECV
Definition: p6net.h:29
virtual P6R::P6ERR enumAliases(p6IEnumAliases **ppEnum)=0
Retrieves an enumeration interface that will allow the hosts aliases to be enumerated.
unsigned char P6UINT8
Definition: p6types.h:30
virtual P6R::P6ERR getServByName(const P6R::P6CHAR *pszName, const P6R::P6CHAR *pszProto, P6R::p6IServent **ppEnt)=0
Retreieves service information that corresponds with the specified service name.
const P6IFFLAGS P6IFF_LOOPBACK
Definition: p6net.h:253
virtual P6R::P6ERR getHostByAddr(const P6R::P6NETADDR *pInAddr, P6R::p6IHostent **ppEnt)=0
Retrieves host information for the specified network address.
P6UINT32 P6SOCKFACTORYFLAGS
Definition: p6net.h:1074
virtual P6R::P6ERR bind(P6R::P6NETADDR *pLocalAddr)=0
Bind the socket to the specified local address and port.
const P6INADDR P6INADDR_ANY
Definition: p6net.h:33
const P6IFFLAGS P6IFF_POINT2POINT
Definition: p6net.h:254
virtual P6R::P6ERR next(P6R::P6UINT32 cElements, P6R::P6IFACEINFO *parElements, P6R::P6UINT32 *pcReturned)=0
unsigned short int P6UINT16
Definition: p6types.h:34
virtual P6R::P6ERR recv(P6R::P6UINT8 *pBuffer, P6R::P6UINT32 cBuffer, P6R::P6UINT32 *pcBytesRead, P6R::P6INTERVAL timeout)=0
Receives data from the specified socket which has been previously "connected" using the connect metho...
P6COM runtime interfaces definitions.
virtual P6R::P6ERR getServByNameW(const P6R::P6WCHAR *pszName, const P6R::P6WCHAR *pszProto, P6R::p6IServent **ppEnt)=0
Retreieves service information that corresponds with the specified service name.
virtual P6R::P6ERR getName(P6R::P6CHAR *pBuffer, P6UINT32 *pcBuffer)=0
Retrieves the hostname associated with this host entry.
const P6IFFLAGS P6IFF_NONE
Definition: p6net.h:249
virtual P6R::P6ERR getID(P6R::P6SIZE *pHandle)=0
Retrieves an ID that can be used to identify this socket.
wchar_t P6WCHAR
Wide character type see p6i18n.h.
Definition: p6types.h:76
const P6IFFLAGS P6IFF_UP
Definition: p6net.h:250
const P6INADDR P6INADDR_BROADCAST
Definition: p6net.h:35
virtual P6R::P6ERR getLocalAddr(P6R::P6NETADDR *pLocalAddr)=0
Get the local address of the socket if bound.
int P6INT32
Definition: p6types.h:41
virtual P6R::P6ERR mcastDropGroup(P6R::P6NETADDR *pmcastAddr, P6R::P6NETADDR *pLocalAddr)=0
The base interface all [p6]COM components must derive from and implement.
Definition: p6comdef.h:96
P6R::P6UINT32 P6SECURESOCKETFLAGS
Definition: p6net.h:538
virtual P6R::P6ERR connect(P6R::P6NETADDR *pRemoteAddr, P6R::P6INTERVAL timeout)=0
Attempt to establish a connection to the remote endpoint.
virtual P6R::P6ERR soKeepAlive(P6R::P6BOOL bSet, P6R::P6BOOL *pbEnable)=0
virtual P6R::P6ERR getProtoByNumber(P6R::P6INT32 nNumber, P6R::p6IProtoent **ppEnt)=0
Retreieves protocol information that corresponds with the specified protocol number.
Log producer component interfaces.
virtual P6R::P6ERR createServerSocketSimple(P6R::P6SOCKFACTORYFLAGS fFlags, P6R::p6ITcpSocket **ppSocket)=0
Creates a socket meant for use with p6IEventQ.
virtual P6R::P6ERR mcastLoopback(P6R::P6BOOL bSet, P6R::P6BOOL *pbEnable)=0
virtual P6R::P6ERR getHostByName2(const P6R::P6CHAR *pszHostname, P6R::p6IHostent **ppEnt)=0
Retrieves host information for the host specified in pszHostname.
const SHUTDOWNFLAGS SDF_SEND
Definition: p6net.h:28
This interface encapsulates protocol information retrieved using various network API's.
Definition: p6net.h:195
virtual P6R::P6ERR enumAliases(p6IEnumAliases **ppEnum)=0
Retrieves an enumeration interface that will allow the protocol's aliases to be enumerated.
virtual P6R::P6ERR createServerSocket2(P6R::P6SOCKFACTORYFLAGS fFlags, const P6R::P6CHAR *pszBindAddrStr, P6R::p6ITcpSocket **ppSocket)=0
virtual P6R::P6ERR recv(P6R::P6UINT8 *pBuffer, P6R::P6UINT32 cBuffer, P6R::P6UINT32 *pcBytesRead, P6R::P6INTERVAL timeout)=0
Receives data from the specified socket which has been previously "connected" using the connect metho...
virtual P6R::P6ERR getLocalAddr(P6R::P6NETADDR *pLocalAddr)=0
Get the local address of the socket if bound.
virtual P6R::P6ERR createClientSocket(P6R::P6SOCKFACTORYFLAGS fFlags, const P6R::P6NETADDR *pBindAddr, P6R::p6ITcpSocket **ppSocket)=0
virtual P6R::P6ERR getFlags(P6R::P6SOCKFLAGS *pfFlags)=0
Retrieves the flags that were specified in the initialize method.
This interface encapsulates protocol information retrieved using various network API's.
Definition: p6net.h:149
virtual P6R::P6ERR tcpMaxSeg(P6R::P6BOOL bSet, P6R::P6UINT32 *pSize)=0
virtual P6R::P6ERR createServerSocket(P6R::P6SOCKFACTORYFLAGS fFlags, const P6R::P6NETADDR *pBindAddr, P6R::p6ITcpSocket **ppSocket)=0
This interface encapsultes host information retrieved using various network API's.
Definition: p6net.h:87
virtual P6R::P6ERR bind(P6R::P6NETADDR *pLocalAddr)=0
Bind the socket to the specified local address and port.
virtual P6R::P6ERR getPeerAddr(P6R::P6NETADDR *pPeerAddr)=0
Retrieve the remote end-point address information on a connected socket.
virtual P6R::P6ERR send(P6R::P6UINT8 *pBuffer, P6R::P6UINT32 cBuffer, P6R::P6UINT32 *pcBytesSent, P6R::P6INTERVAL timeout)=0
This method is used to send data on a connected socket.
virtual P6R::P6ERR getType(P6R::P6INT32 *pAddrType)=0
Retrieve the type of addresses being returned (P6AF_INET or P6AF_INTE6).
virtual P6R::P6ERR soRecvBuf(P6R::P6BOOL bSet, P6R::P6UINT32 *pSize)=0
virtual P6R::P6ERR reset()=0
#define P6MAXHOSTNAME
Definition: p6types.h:897
virtual P6R::P6ERR getName(P6R::P6CHAR *pBuffer, P6R::P6UINT32 *pcBuffer)=0
Retrieves the official name of the service.
virtual P6R::P6ERR next(P6R::P6UINT32 cElements, P6R::P6NETALIAS *parElements, P6R::P6UINT32 *pcReturned)=0
P6UINT32 P6INADDR
Definition: p6net.h:32
virtual P6R::P6ERR createClientSocketSimple(P6R::P6SOCKFACTORYFLAGS fFlags, P6R::p6ITcpSocket **ppSocket)=0
const SHUTDOWNFLAGS SDF_BOTH
Definition: p6net.h:30
P6COM runtime interfaces definitions.
virtual P6R::P6ERR getProto(P6R::P6UINT16 *pnProto)=0
Retrieves the protocol number in host byte order.
virtual P6R::P6ERR getID(P6R::P6SIZE *pHandle)=0
Retrieves an ID that can be used to identify this socket.
#define P6COMMETHOD
Definition: p6types.h:872
virtual P6R::P6ERR enumAliases(P6R::p6IEnumAliases **ppEnum)=0
Retrieves an enumeration interface that will allow the service's aliases to be enumerated.
P6COM runtime component interface definitions.
P6NETADDR m_netmask
Definition: p6net.h:260
virtual P6R::P6ERR recvFrom(P6R::P6UINT8 *pBuffer, P6R::P6UINT32 cBuffer, P6R::P6UINT32 *pcBytesRead, P6R::P6INTERVAL timeout, P6R::P6NETADDR *pRemoteAddr)=0
Receives data from the socket.
virtual P6R::P6ERR soNonBlock(P6R::P6BOOL bSet, P6R::P6BOOL *pbEnable)=0
const P6IFFLAGS P6IFF_MULTICAST
Definition: p6net.h:252
virtual P6R::P6ERR sendTo(P6R::P6UINT8 *pBuffer, P6R::P6UINT32 cBuffer, P6R::P6UINT32 *pcBytesSent, P6R::P6INTERVAL timeout, P6R::P6NETADDR *pRemoteAddr)=0
Sends a datagram to the specified endpoint on an un-connected socket.
virtual P6R::P6ERR getFlags(P6R::P6SOCKFLAGS *pfFlags)=0
Retrieves the flags that were specified in the initialize method.
const P6IFFLAGS P6IFF_BROADCAST
Definition: p6net.h:251
virtual P6R::P6ERR connect(P6R::P6NETADDR *pRemoteAddr, P6R::P6INTERVAL timeout)=0
Connect the socket with the end-point specified in pRemoteAddr.
Set various options on the current socket.
Definition: p6net.h:480
const P6INADDR P6INADDR_LOOPBACK
Definition: p6net.h:34
virtual P6R::P6ERR initSecureSocket(P6R::p6IKeystore *pKeystore, P6R::p6IIoBufferFactory *pFactory, const P6R::P6WCHAR *pszHostname, const P6R::P6WCHAR *pszCiphers, P6R::P6SECURESOCKETFLAGS fSecureFlags)=0
Initializes the socket for use with SSL/TLS.
virtual P6R::P6ERR getPort(P6R::P6UINT16 *pnPort)=0
Retrieves the port number (in network byte order) at which the service can be contacted.
virtual P6R::P6ERR accept(P6R::P6NETADDR *pAddr, P6R::P6INTERVAL timeout, P6R::p6ITcpSocket **ppSocket)=0
Accepts an incomming connection attempt on the the socket.
virtual P6R::P6ERR reset()=0
virtual P6R::P6ERR getHostnameW(P6R::P6WCHAR *pBuffer, P6R::P6UINT32 cBuffer)=0
Retrieves the hostname of the local machine.
virtual P6R::P6ERR getPeerAddr(P6R::P6NETADDR *pPeerAddr)=0
Retrieve the remote end-point address information on a connected socket.
virtual P6R::P6ERR getProtoByName(const P6R::P6CHAR *pszName, P6R::p6IProtoent **ppEnt)=0
Retreieves protocol information that corresponds with the specified protocol name.
virtual P6R::P6ERR tcpNoDelay(P6R::P6BOOL bSet, P6R::P6BOOL *pbEnable)=0
Used to enable/disable Nagle for the current socket.
P6R::P6UINT32 P6SOCKFLAGS
Definition: p6net.h:529
P6NETADDR m_broadcast
Definition: p6net.h:259
This interface is used to enumerate aliases for host and protocol alias information.
Definition: p6net.h:69
virtual P6R::P6ERR getProtoByNameW(const P6R::P6WCHAR *pszName, P6R::p6IProtoent **ppEnt)=0
Retreieves protocol infromation that corresponds with the specified protocol name.
virtual P6R::P6ERR mcastJoinGroup(P6R::P6NETADDR *pmcastAddr, P6R::P6NETADDR *pLocalAddr)=0
virtual P6R::P6ERR getHostByNameW(const P6R::P6WCHAR *pszHostname, P6R::P6NETADDR *pAddr)=0
Retrieves host address information for the host specified in pszHostname.
char P6CHAR
Narrow character type.
Definition: p6types.h:71
virtual P6R::P6ERR ipTOS(P6R::P6BOOL bSet, P6R::P6UINT16 *pTOS)=0
This method gets or sets the type-of-service field in the IP header for a TCP or UDP socket...
virtual P6R::P6ERR enumInterfaces(P6R::P6ADDRFAM nFamily, P6R::p6IEnumInterfaces **ppEnum)=0