refactor: merge dnsx and errorsx into netxlite (#517)
When preparing a tutorial for netxlite, I figured it is easier to tell people "hey, this is the package you should use for all low-level networking stuff" rather than introducing people to a set of packages working together where some piece of functionality is here and some other piece is there. Part of https://github.com/ooni/probe/issues/1591
This commit is contained in:
parent
de130d249c
commit
6d3a4f1db8
169 changed files with 575 additions and 671 deletions
|
|
@ -1,181 +0,0 @@
|
|||
// Code generated by go generate; DO NOT EDIT.
|
||||
// Generated: 2021-09-27 15:57:58.500515 +0200 CEST m=+0.304199251
|
||||
|
||||
package errorsx
|
||||
|
||||
//go:generate go run ./internal/generrno/
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
// This enumeration lists the failures defined at
|
||||
// https://github.com/ooni/spec/blob/master/data-formats/df-007-errors.md
|
||||
const (
|
||||
//
|
||||
// System errors
|
||||
//
|
||||
FailureOperationCanceled = "operation_canceled"
|
||||
FailureConnectionRefused = "connection_refused"
|
||||
FailureConnectionReset = "connection_reset"
|
||||
FailureHostUnreachable = "host_unreachable"
|
||||
FailureTimedOut = "timed_out"
|
||||
FailureAddressFamilyNotSupported = "address_family_not_supported"
|
||||
FailureAddressInUse = "address_in_use"
|
||||
FailureAddressNotAvailable = "address_not_available"
|
||||
FailureAlreadyConnected = "already_connected"
|
||||
FailureBadAddress = "bad_address"
|
||||
FailureBadFileDescriptor = "bad_file_descriptor"
|
||||
FailureConnectionAborted = "connection_aborted"
|
||||
FailureConnectionAlreadyInProgress = "connection_already_in_progress"
|
||||
FailureDestinationAddressRequired = "destination_address_required"
|
||||
FailureInterrupted = "interrupted"
|
||||
FailureInvalidArgument = "invalid_argument"
|
||||
FailureMessageSize = "message_size"
|
||||
FailureNetworkDown = "network_down"
|
||||
FailureNetworkReset = "network_reset"
|
||||
FailureNetworkUnreachable = "network_unreachable"
|
||||
FailureNoBufferSpace = "no_buffer_space"
|
||||
FailureNoProtocolOption = "no_protocol_option"
|
||||
FailureNotASocket = "not_a_socket"
|
||||
FailureNotConnected = "not_connected"
|
||||
FailureOperationWouldBlock = "operation_would_block"
|
||||
FailurePermissionDenied = "permission_denied"
|
||||
FailureProtocolNotSupported = "protocol_not_supported"
|
||||
FailureWrongProtocolType = "wrong_protocol_type"
|
||||
|
||||
//
|
||||
// Library errors
|
||||
//
|
||||
FailureDNSBogonError = "dns_bogon_error"
|
||||
FailureDNSNXDOMAINError = "dns_nxdomain_error"
|
||||
FailureDNSRefusedError = "dns_refused_error"
|
||||
FailureDNSServerMisbehaving = "dns_server_misbehaving"
|
||||
FailureDNSNoAnswer = "dns_no_answer"
|
||||
FailureEOFError = "eof_error"
|
||||
FailureGenericTimeoutError = "generic_timeout_error"
|
||||
FailureQUICIncompatibleVersion = "quic_incompatible_version"
|
||||
FailureSSLFailedHandshake = "ssl_failed_handshake"
|
||||
FailureSSLInvalidHostname = "ssl_invalid_hostname"
|
||||
FailureSSLUnknownAuthority = "ssl_unknown_authority"
|
||||
FailureSSLInvalidCertificate = "ssl_invalid_certificate"
|
||||
FailureJSONParseError = "json_parse_error"
|
||||
FailureConnectionAlreadyClosed = "connection_already_closed"
|
||||
)
|
||||
|
||||
// failureMap lists all failures so we can match them
|
||||
// when they are wrapped by quic.TransportError.
|
||||
var failuresMap = map[string]string{
|
||||
"operation_canceled": "operation_canceled",
|
||||
"connection_refused": "connection_refused",
|
||||
"connection_reset": "connection_reset",
|
||||
"host_unreachable": "host_unreachable",
|
||||
"timed_out": "timed_out",
|
||||
"address_family_not_supported": "address_family_not_supported",
|
||||
"address_in_use": "address_in_use",
|
||||
"address_not_available": "address_not_available",
|
||||
"already_connected": "already_connected",
|
||||
"bad_address": "bad_address",
|
||||
"bad_file_descriptor": "bad_file_descriptor",
|
||||
"connection_aborted": "connection_aborted",
|
||||
"connection_already_in_progress": "connection_already_in_progress",
|
||||
"destination_address_required": "destination_address_required",
|
||||
"interrupted": "interrupted",
|
||||
"invalid_argument": "invalid_argument",
|
||||
"message_size": "message_size",
|
||||
"network_down": "network_down",
|
||||
"network_reset": "network_reset",
|
||||
"network_unreachable": "network_unreachable",
|
||||
"no_buffer_space": "no_buffer_space",
|
||||
"no_protocol_option": "no_protocol_option",
|
||||
"not_a_socket": "not_a_socket",
|
||||
"not_connected": "not_connected",
|
||||
"operation_would_block": "operation_would_block",
|
||||
"permission_denied": "permission_denied",
|
||||
"protocol_not_supported": "protocol_not_supported",
|
||||
"wrong_protocol_type": "wrong_protocol_type",
|
||||
"dns_bogon_error": "dns_bogon_error",
|
||||
"dns_nxdomain_error": "dns_nxdomain_error",
|
||||
"dns_refused_error": "dns_refused_error",
|
||||
"dns_server_misbehaving": "dns_server_misbehaving",
|
||||
"dns_no_answer": "dns_no_answer",
|
||||
"eof_error": "eof_error",
|
||||
"generic_timeout_error": "generic_timeout_error",
|
||||
"quic_incompatible_version": "quic_incompatible_version",
|
||||
"ssl_failed_handshake": "ssl_failed_handshake",
|
||||
"ssl_invalid_hostname": "ssl_invalid_hostname",
|
||||
"ssl_unknown_authority": "ssl_unknown_authority",
|
||||
"ssl_invalid_certificate": "ssl_invalid_certificate",
|
||||
"json_parse_error": "json_parse_error",
|
||||
"connection_already_closed": "connection_already_closed",
|
||||
}
|
||||
|
||||
// classifySyscallError converts a syscall error to the
|
||||
// proper OONI error. Returns the OONI error string
|
||||
// on success, an empty string otherwise.
|
||||
func classifySyscallError(err error) string {
|
||||
var errno syscall.Errno
|
||||
if !errors.As(err, &errno) {
|
||||
return ""
|
||||
}
|
||||
switch errno {
|
||||
case ECANCELED:
|
||||
return FailureOperationCanceled
|
||||
case ECONNREFUSED:
|
||||
return FailureConnectionRefused
|
||||
case ECONNRESET:
|
||||
return FailureConnectionReset
|
||||
case EHOSTUNREACH:
|
||||
return FailureHostUnreachable
|
||||
case ETIMEDOUT:
|
||||
return FailureTimedOut
|
||||
case EAFNOSUPPORT:
|
||||
return FailureAddressFamilyNotSupported
|
||||
case EADDRINUSE:
|
||||
return FailureAddressInUse
|
||||
case EADDRNOTAVAIL:
|
||||
return FailureAddressNotAvailable
|
||||
case EISCONN:
|
||||
return FailureAlreadyConnected
|
||||
case EFAULT:
|
||||
return FailureBadAddress
|
||||
case EBADF:
|
||||
return FailureBadFileDescriptor
|
||||
case ECONNABORTED:
|
||||
return FailureConnectionAborted
|
||||
case EALREADY:
|
||||
return FailureConnectionAlreadyInProgress
|
||||
case EDESTADDRREQ:
|
||||
return FailureDestinationAddressRequired
|
||||
case EINTR:
|
||||
return FailureInterrupted
|
||||
case EINVAL:
|
||||
return FailureInvalidArgument
|
||||
case EMSGSIZE:
|
||||
return FailureMessageSize
|
||||
case ENETDOWN:
|
||||
return FailureNetworkDown
|
||||
case ENETRESET:
|
||||
return FailureNetworkReset
|
||||
case ENETUNREACH:
|
||||
return FailureNetworkUnreachable
|
||||
case ENOBUFS:
|
||||
return FailureNoBufferSpace
|
||||
case ENOPROTOOPT:
|
||||
return FailureNoProtocolOption
|
||||
case ENOTSOCK:
|
||||
return FailureNotASocket
|
||||
case ENOTCONN:
|
||||
return FailureNotConnected
|
||||
case EWOULDBLOCK:
|
||||
return FailureOperationWouldBlock
|
||||
case EACCES:
|
||||
return FailurePermissionDenied
|
||||
case EPROTONOSUPPORT:
|
||||
return FailureProtocolNotSupported
|
||||
case EPROTOTYPE:
|
||||
return FailureWrongProtocolType
|
||||
}
|
||||
return ""
|
||||
}
|
||||
Loading…
Reference in a new issue