Socket
Description
A connected socket: either returned by ListenerAccept (server side) or by SocketConnect (client side). peer is the remote endpoint.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Sys.h:32:
#if FEATURE_SYS_SOCKET
# include <Misra/Sys/Socket.h>
#endif- In
Socket.h:101:
SocketKind kind;
SocketAddr peer;
} Socket;
typedef enum SocketPollFlags {- In
Socket.h:232:
/// TAGS: Socket, Listener, Accept
///
bool ListenerAccept(Listener *self, Socket *out_conn);
///
- In
Socket.h:259:
/// TAGS: Socket, Connect
///
bool SocketConnect(Socket *out, SocketKind kind, const SocketAddr *target);
///
- In
Socket.h:273:
/// TAGS: Socket, Recv
///
i64 SocketRecv(Socket *self, void *buf, size n);
///
- In
Socket.h:288:
/// TAGS: Socket, Send
///
i64 SocketSend(Socket *self, const void *buf, size n);
///
- In
Socket.h:299:
/// TAGS: Socket, Close
///
void SocketClose(Socket *self);
// --- Options ----------------------------------------------------------------
- In
Dns.h:32:
#include <Misra/Std/Container/Str.h>
#include <Misra/Std/Container/Vec.h>
#include <Misra/Sys/Socket.h>
#include <Misra/Types.h>- In
Dns.c:20:
#include <Misra/Std/Memory.h>
#include <Misra/Std/Prng.h>
#include <Misra/Sys/Socket.h>
#include "../_Syscall.h"- In
Dns.c:408:
// on success or -1 on failure.
static i64 udp_round_trip(const SocketAddr *ns, const u8 *query, u64 qlen, u8 *resp_buf, u64 resp_cap, u32 timeout_ms) {
Socket sock = {0};
if (!SocketConnect(&sock, SOCKET_KIND_UDP, ns)) {
return -1;- In
Socket.c:19:
#include <Misra/Config.h>
#include <Misra/Sys/Socket.h>
#include <Misra/Std.h>- In
Socket.c:813:
}
bool ListenerAccept(Listener *self, Socket *out_conn) {
if (!self || !out_conn) {
LOG_FATAL("ListenerAccept: NULL argument");- In
Socket.c:848:
// ---------------------------------------------------------------------------
bool SocketConnect(Socket *out, SocketKind kind, const SocketAddr *target) {
if (!out || !target) {
LOG_FATAL("SocketConnect: NULL argument");- In
Socket.c:879:
}
i64 SocketRecv(Socket *self, void *buf, size n) {
if (!self || !buf) {
LOG_FATAL("SocketRecv: NULL argument");- In
Socket.c:886:
}
i64 SocketSend(Socket *self, const void *buf, size n) {
if (!self || !buf) {
LOG_FATAL("SocketSend: NULL argument");- In
Socket.c:893:
}
void SocketClose(Socket *self) {
if (!self) {
return;- In
Resolve.c:17:
#include <Misra/Std/ArgParse.h>
#include <Misra/Sys/Dns.h>
#include <Misra/Sys/Socket.h>
int main(int argc, char **argv) {- In
Beam.c:24:
#include <Misra/Std/ArgParse.h>
#include <Misra/Sys/Dns.h>
#include <Misra/Sys/Socket.h>
#if PLATFORM_WINDOWS- In
Beam.c:300:
// directions close. `first_chunk` (if non-NULL) is sent toward `b`
// before the poll loop runs, so the initial client read isn't lost.
static void proxy_pump(Socket *a, Socket *b, Zstr first_chunk, size first_len) {
if (first_chunk && first_len > 0) {
if (SocketSend(b, first_chunk, first_len) < 0) {- In
Beam.c:345:
}
static void handle_connection(Allocator *alloc, Socket *client, const SocketAddr *upstream_addr) {
Str peer_str = SocketAddrFormat(&client->peer, alloc);- In
Beam.c:348:
Str peer_str = SocketAddrFormat(&client->peer, alloc);
Socket upstream;
if (!SocketConnect(&upstream, SOCKET_KIND_TCP, upstream_addr)) {
LOG_ERROR("failed to dial upstream for client [{}]", peer_str);- In
Beam.c:442:
}
Socket client;
if (!ListenerAccept(&listener, &client)) {
continue;- In
SysDns.Api.c:21:
#include <Misra/Std/Zstr.h>
#include <Misra/Sys/Dns.h>
#include <Misra/Sys/Socket.h>
#include "../Util/TestRunner.h" #include <Misra/Std/Log.h>
#include <Misra/Std/Zstr.h>
#include <Misra/Sys/Socket.h>
#include "../Util/TestRunner.h"
int main(void) {
WriteFmt("[INFO] Starting Socket.Blind tests\n\n");
TestFunction tests[] = { (void)deadend_tests;
return run_test_suite(tests, sizeof(tests) / sizeof(tests[0]), deadend_tests, 0, "Socket.Blind");
}- In
Socket.Mut.c:12:
(void)tests;
(void)deadend_tests;
return run_test_suite(tests, 0, deadend_tests, 0, "Socket.Mut");
} #include <Misra/Std/Zstr.h>
#include <Misra/Sys/Dns.h>
#include <Misra/Sys/Socket.h>
#include <Misra/Std/Utility/StrIter.h>- In
SysDns.c:5:
#include <Misra/Std/Log.h>
#include <Misra/Sys/Dns.h>
#include <Misra/Sys/Socket.h>
#include "../Util/TestRunner.h"- In
Socket.c:10:
#include <Misra/Std/Zstr.h>
#include <Misra/Std/Log.h>
#include <Misra/Sys/Socket.h>
#include "../Util/TestRunner.h"- In
Socket.c:23:
Listener listener;
Socket client = {0};
Socket server = {0};- In
Socket.c:24:
Listener listener;
Socket client = {0};
Socket server = {0};
SocketAddr bind_addr;- In
Socket.c:141:
typedef struct Pair {
Listener listener;
Socket client;
Socket server;
bool ok;- In
Socket.c:142:
Listener listener;
Socket client;
Socket server;
bool ok;
} Pair;- In
Socket.c:1018:
}
Socket client = {0};
if (!SocketConnect(&client, SOCKET_KIND_TCP, &connect_addr)) {
ListenerClose(&listener);- In
Socket.c:1025:
}
Socket server = {0};
bool ok = ListenerAccept(&listener, &server);
ok = ok && server.kind == SOCKET_KIND_TCP;- In
Socket.c:1097:
// failure everything opened so far is torn down and false is returned.
// ---------------------------------------------------------------------------
static bool sk4_make_pair(Allocator *a, Listener *listener, Socket *client, Socket *server, SocketAddr *local_out) {
*client = (Socket) {0};
*server = (Socket) {0};- In
Socket.c:1098:
// ---------------------------------------------------------------------------
static bool sk4_make_pair(Allocator *a, Listener *listener, Socket *client, Socket *server, SocketAddr *local_out) {
*client = (Socket) {0};
*server = (Socket) {0};- In
Socket.c:1099:
static bool sk4_make_pair(Allocator *a, Listener *listener, Socket *client, Socket *server, SocketAddr *local_out) {
*client = (Socket) {0};
*server = (Socket) {0};
SocketAddr bind_addr;- In
Socket.c:1153:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {- In
Socket.c:1154:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {
DefaultAllocatorDeinit(&alloc);- In
Socket.c:1216:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {- In
Socket.c:1217:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {
DefaultAllocatorDeinit(&alloc);- In
Socket.c:1253:
Listener listener;
Socket client;
Socket server;
SocketAddr local;- In
Socket.c:1254:
Listener listener;
Socket client;
Socket server;
SocketAddr local;
if (!sk4_make_pair(a, &listener, &client, &server, &local)) {- In
Socket.c:1293:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {- In
Socket.c:1294:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {
DefaultAllocatorDeinit(&alloc);- In
Socket.c:1348:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {- In
Socket.c:1349:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {
DefaultAllocatorDeinit(&alloc);- In
Socket.c:1392:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {- In
Socket.c:1393:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {
DefaultAllocatorDeinit(&alloc);- In
Socket.c:1429:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {- In
Socket.c:1430:
Listener listener;
Socket client;
Socket server;
if (!sk4_make_pair(a, &listener, &client, &server, NULL)) {
DefaultAllocatorDeinit(&alloc);- In
Socket.c:1599:
int main(void) {
WriteFmt("[INFO] Starting Socket tests\n\n");
TestFunction tests[] = {- In
Socket.c:1669:
deadend_tests,
sizeof(deadend_tests) / sizeof(deadend_tests[0]),
"Socket"
);
}- In
SysDns.Wire.c:18:
#include <Misra/Std/Allocator/Default.h>
#include <Misra/Sys/Dns.h>
#include <Misra/Sys/Socket.h>
#include "../Util/TestRunner.h"- In
SysDns.Mut.c:31:
#include <Misra/Std/Zstr.h>
#include <Misra/Sys/Dns.h>
#include <Misra/Sys/Socket.h>
#include "../Util/TestRunner.h"
Last updated on