* Added HV Socket known IDs, Dial, bug fixes
Added:
* Well-know Hyper-V VMIDs for parents, children, and loopback.
* VSock interop service GUID.
* `Dial()` and `DialContext()` to dial a specific Hyper-V socket at a
known address (along with a corresponding `HvsockDialer` struct.
Bug fixes:
* Dial (and Listen) now properly initialize and set properties of their
sockets after ConnectEx (and AcceptEx).
* The `socketError` used by `bind` was incorrect, it should be `int32(-1)`,
not `uintptr(^0)`
* Return errors for `(*HvsockConn) SetDeadline`
Created a `sockets` package, currently only with syscalls to `Bind`,
`ConnectEx` and `GetSockName`, bypassing `syscall/windows` restrictions
on the types that can do so.
Signed-off-by: Hamza El-Saawy <hamzaelsaawy@microsoft.com>
* PR: error handling bug, rebase, unexport, naming
* comments and todos statements
* spelling
* removed dead code
* changed names to be more conventional
* unexported socket code
* made `(*HvsockDialer) Dial` take `Context`, removed `DialContext`
* added default `Dial` function
* rebased onto main
* cleaned up `Dial(` retry loop
Signed-off-by: Hamza El-Saawy <hamzaelsaawy@microsoft.com>
* PR: RawSockaddr validation, `.As(` style
Signed-off-by: Hamza El-Saawy <hamzaelsaawy@microsoft.com>
Corrected `HvsockConn` `CloseRead`/`Write` to check if the socket
has been closed before attempting to shutdown the socket for
reading or writing.
Additionally, `shutdown` was not respecting whether to shutdown reading
or writing, and only shutting down the socket for reading.
Added `IsClosed` function to `win32File` (and therefore `win32Pipe` and
`win32MessageBytePipe`) and `HvsockConn` to check if the socket/pipe
has been closed already.
Signed-off-by: Hamza El-Saawy <hamzaelsaawy@microsoft.com>