Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/hyperv/hvsock/hv_sock.c
Show First 20 Lines • Show All 80 Lines • ▼ Show 20 Lines | |||||
#define HVSOCK_SEND_BUF_SZ (PAGE_SIZE - sizeof(struct vmpipe_proto_header)) | #define HVSOCK_SEND_BUF_SZ (PAGE_SIZE - sizeof(struct vmpipe_proto_header)) | ||||
#define HVSOCK_HEADER_LEN (sizeof(struct hvs_pkt_header)) | #define HVSOCK_HEADER_LEN (sizeof(struct hvs_pkt_header)) | ||||
#define HVSOCK_PKT_LEN(payload_len) (HVSOCK_HEADER_LEN + \ | #define HVSOCK_PKT_LEN(payload_len) (HVSOCK_HEADER_LEN + \ | ||||
roundup2(payload_len, 8) + \ | roundup2(payload_len, 8) + \ | ||||
sizeof(uint64_t)) | sizeof(uint64_t)) | ||||
static struct domain hv_socket_domain; | |||||
/* | /* | ||||
* HyperV Transport sockets | * HyperV Transport sockets | ||||
*/ | */ | ||||
static struct pr_usrreqs hvs_trans_usrreqs = { | static struct protosw hv_socket_protosw = { | ||||
.pru_attach = hvs_trans_attach, | |||||
.pru_bind = hvs_trans_bind, | |||||
.pru_listen = hvs_trans_listen, | |||||
.pru_accept = hvs_trans_accept, | |||||
.pru_connect = hvs_trans_connect, | |||||
.pru_peeraddr = hvs_trans_peeraddr, | |||||
.pru_sockaddr = hvs_trans_sockaddr, | |||||
.pru_soreceive = hvs_trans_soreceive, | |||||
.pru_sosend = hvs_trans_sosend, | |||||
.pru_disconnect = hvs_trans_disconnect, | |||||
.pru_close = hvs_trans_close, | |||||
.pru_detach = hvs_trans_detach, | |||||
.pru_shutdown = hvs_trans_shutdown, | |||||
.pru_abort = hvs_trans_abort, | |||||
}; | |||||
/* | |||||
* Definitions of protocols supported in HyperV socket domain | |||||
*/ | |||||
static struct protosw hv_socket_protosw[] = { | |||||
{ | |||||
.pr_type = SOCK_STREAM, | .pr_type = SOCK_STREAM, | ||||
.pr_domain = &hv_socket_domain, | |||||
.pr_protocol = HYPERV_SOCK_PROTO_TRANS, | .pr_protocol = HYPERV_SOCK_PROTO_TRANS, | ||||
.pr_flags = PR_CONNREQUIRED, | .pr_flags = PR_CONNREQUIRED, | ||||
.pr_usrreqs = &hvs_trans_usrreqs, | .pr_attach = hvs_trans_attach, | ||||
}, | .pr_bind = hvs_trans_bind, | ||||
.pr_listen = hvs_trans_listen, | |||||
.pr_accept = hvs_trans_accept, | |||||
.pr_connect = hvs_trans_connect, | |||||
.pr_peeraddr = hvs_trans_peeraddr, | |||||
.pr_sockaddr = hvs_trans_sockaddr, | |||||
.pr_soreceive = hvs_trans_soreceive, | |||||
.pr_sosend = hvs_trans_sosend, | |||||
.pr_disconnect = hvs_trans_disconnect, | |||||
.pr_close = hvs_trans_close, | |||||
.pr_detach = hvs_trans_detach, | |||||
.pr_shutdown = hvs_trans_shutdown, | |||||
.pr_abort = hvs_trans_abort, | |||||
}; | }; | ||||
static struct domain hv_socket_domain = { | static struct domain hv_socket_domain = { | ||||
.dom_family = AF_HYPERV, | .dom_family = AF_HYPERV, | ||||
.dom_name = "hyperv", | .dom_name = "hyperv", | ||||
.dom_probe = hvs_dom_probe, | .dom_probe = hvs_dom_probe, | ||||
.dom_protosw = hv_socket_protosw, | .dom_nprotosw = 1, | ||||
.dom_protoswNPROTOSW = &hv_socket_protosw[nitems(hv_socket_protosw)] | .dom_protosw = { &hv_socket_protosw }, | ||||
}; | }; | ||||
DOMAIN_SET(hv_socket_); | DOMAIN_SET(hv_socket_); | ||||
#define MAX_PORT ((uint32_t)0xFFFFFFFF) | #define MAX_PORT ((uint32_t)0xFFFFFFFF) | ||||
#define MIN_PORT ((uint32_t)0x0) | #define MIN_PORT ((uint32_t)0x0) | ||||
/* 00000000-facb-11e6-bd58-64006a7986d3 */ | /* 00000000-facb-11e6-bd58-64006a7986d3 */ | ||||
▲ Show 20 Lines • Show All 1,620 Lines • Show Last 20 Lines |