summaryrefslogtreecommitdiffstats
path: root/vendor/r-efi/src/protocols/tcp4.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/r-efi/src/protocols/tcp4.rs')
-rw-r--r--vendor/r-efi/src/protocols/tcp4.rs224
1 files changed, 224 insertions, 0 deletions
diff --git a/vendor/r-efi/src/protocols/tcp4.rs b/vendor/r-efi/src/protocols/tcp4.rs
new file mode 100644
index 000000000..051b1d8ef
--- /dev/null
+++ b/vendor/r-efi/src/protocols/tcp4.rs
@@ -0,0 +1,224 @@
+//! Transmission Control Protocol version 4
+//!
+//! It provides services to send and receive data streams.
+
+pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
+ 0x65530bc7,
+ 0xa359,
+ 0x410f,
+ 0xb0,
+ 0x10,
+ &[0x5a, 0xad, 0xc7, 0xec, 0x2b, 0x62],
+);
+
+pub const SERVICE_BINDING_PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
+ 0x00720665,
+ 0x67eb,
+ 0x4a99,
+ 0xba,
+ 0xf7,
+ &[0xd3, 0xc3, 0x3a, 0x1c, 0x7c, 0xc9],
+);
+
+pub type ConnectionState = u32;
+
+pub const STATE_CLOSED: ConnectionState = 0x00000000;
+pub const STATE_LISTEN: ConnectionState = 0x00000001;
+pub const STATE_SYN_SENT: ConnectionState = 0x00000002;
+pub const STATE_SYN_RECEIVED: ConnectionState = 0x00000003;
+pub const STATE_ESTABLISHED: ConnectionState = 0x00000004;
+pub const STATE_FIN_WAIT1: ConnectionState = 0x00000005;
+pub const STATE_FIN_WAIT2: ConnectionState = 0x00000006;
+pub const STATE_CLOSING: ConnectionState = 0x00000007;
+pub const STATE_TIME_WAIT: ConnectionState = 0x00000008;
+pub const STATE_CLOSE_WAIT: ConnectionState = 0x00000009;
+pub const STATE_LAST_ACK: ConnectionState = 0x0000000a;
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug)]
+pub struct ConfigData {
+ pub type_of_service: u8,
+ pub time_to_live: u8,
+ pub access_point: AccessPoint,
+ pub control_option: *mut r#Option,
+}
+
+impl Default for ConfigData {
+ fn default() -> Self {
+ Self {
+ type_of_service: Default::default(),
+ time_to_live: Default::default(),
+ access_point: Default::default(),
+ control_option: core::ptr::null_mut(),
+ }
+ }
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug, Default)]
+pub struct AccessPoint {
+ pub use_default_address: crate::base::Boolean,
+ pub station_address: crate::base::Ipv4Address,
+ pub subnet_mask: crate::base::Ipv4Address,
+ pub station_port: u16,
+ pub remote_address: crate::base::Ipv4Address,
+ pub remote_port: u16,
+ pub active_flag: crate::base::Boolean,
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug)]
+pub struct r#Option {
+ pub receive_buffer_size: u32,
+ pub send_buffer_size: u32,
+ pub max_syn_back_log: u32,
+ pub connection_timeout: u32,
+ pub data_retries: u32,
+ pub fin_timeout: u32,
+ pub time_wait_timeout: u32,
+ pub keep_alive_probes: u32,
+ pub keep_alive_time: u32,
+ pub keep_alive_interval: u32,
+ pub enable_nagle: crate::base::Boolean,
+ pub enable_time_stamp: crate::base::Boolean,
+ pub enable_window_scaling: crate::base::Boolean,
+ pub enable_selective_ack: crate::base::Boolean,
+ pub enable_path_mtu_discovery: crate::base::Boolean,
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug)]
+pub struct CompletionToken {
+ pub event: crate::base::Event,
+ pub status: crate::base::Status,
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug)]
+pub struct ConnectionToken {
+ pub completion_token: CompletionToken,
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug)]
+pub struct ListenToken {
+ pub completion_token: CompletionToken,
+ pub new_child_handle: crate::base::Handle,
+}
+
+#[repr(C)]
+#[derive(Clone, Copy)]
+pub struct IoToken {
+ pub completion_token: CompletionToken,
+ pub packet: IoTokenPacket,
+}
+
+#[repr(C)]
+#[derive(Clone, Copy)]
+pub union IoTokenPacket {
+ pub rx_data: *mut ReceiveData,
+ pub tx_data: *mut TransmitData,
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug)]
+pub struct ReceiveData<const N: usize = 0> {
+ pub urgent_flag: crate::base::Boolean,
+ pub data_length: u32,
+ pub fragment_count: u32,
+ pub fragment_table: [FragmentData; N],
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug)]
+pub struct FragmentData {
+ pub fragment_length: u32,
+ pub fragment_buffer: *mut core::ffi::c_void,
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug)]
+pub struct TransmitData<const N: usize = 0> {
+ pub push: crate::base::Boolean,
+ pub urgent: crate::base::Boolean,
+ pub data_length: u32,
+ pub fragment_count: u32,
+ pub fragment_table: [FragmentData; N],
+}
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug)]
+pub struct CloseToken {
+ pub completion_token: CompletionToken,
+ pub abort_on_close: crate::base::Boolean,
+}
+
+pub type ProtocolGetModeData = eficall! {fn(
+ *mut Protocol,
+ *mut ConnectionState,
+ *mut ConfigData,
+ *mut crate::protocols::ip4::ModeData,
+ *mut crate::protocols::managed_network::ConfigData,
+ *mut crate::protocols::simple_network::Mode,
+) -> crate::base::Status};
+
+pub type ProtocolConfigure = eficall! {fn(
+ *mut Protocol,
+ *mut ConfigData,
+) -> crate::base::Status};
+
+pub type ProtocolRoutes = eficall! {fn(
+ *mut Protocol,
+ crate::base::Boolean,
+ *mut crate::base::Ipv4Address,
+ *mut crate::base::Ipv4Address,
+ *mut crate::base::Ipv4Address,
+) -> crate::base::Status};
+
+pub type ProtocolConnect = eficall! {fn(
+ *mut Protocol,
+ *mut ConnectionToken,
+) -> crate::base::Status};
+
+pub type ProtocolAccept = eficall! {fn(
+ *mut Protocol,
+ *mut ListenToken,
+) -> crate::base::Status};
+
+pub type ProtocolTransmit = eficall! {fn(
+ *mut Protocol,
+ *mut IoToken,
+) -> crate::base::Status};
+
+pub type ProtocolReceive = eficall! {fn(
+ *mut Protocol,
+ *mut IoToken,
+) -> crate::base::Status};
+
+pub type ProtocolClose = eficall! {fn(
+ *mut Protocol,
+ *mut CloseToken,
+) -> crate::base::Status};
+
+pub type ProtocolCancel = eficall! {fn(
+ *mut Protocol,
+ *mut CompletionToken,
+) -> crate::base::Status};
+
+pub type ProtocolPoll = eficall! {fn(
+ *mut Protocol,
+) -> crate::base::Status};
+
+#[repr(C)]
+pub struct Protocol {
+ pub get_mode_data: ProtocolGetModeData,
+ pub configure: ProtocolConfigure,
+ pub routes: ProtocolRoutes,
+ pub connect: ProtocolConnect,
+ pub accept: ProtocolAccept,
+ pub transmit: ProtocolTransmit,
+ pub receive: ProtocolReceive,
+ pub close: ProtocolClose,
+ pub cancel: ProtocolCancel,
+ pub poll: ProtocolPoll,
+}