Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/wapython
Path: blob/main/core/kernel/src/wasm/posix/netif.zig
1068 views
1
const std = @import("std");
2
const net_if = @cImport({
3
@cDefine("if_nameindex_struct", "struct if_nameindex");
4
@cInclude("net/if.h");
5
});
6
7
pub const constants = .{
8
.c_import = net_if,
9
.names = [_][:0]const u8{"IFNAMSIZ"},
10
};
11
12
export fn createNameIndexArray(len: usize) ?[*]net_if.if_nameindex_struct {
13
const voidPtr = std.c.malloc((len + 1) * @sizeOf(net_if.if_nameindex_struct)) orelse return null;
14
const ni = @ptrCast([*]net_if.if_nameindex_struct, @alignCast(std.meta.alignment(*net_if.if_nameindex_struct), voidPtr));
15
setNameIndexElement(ni, len, 0, null);
16
return ni;
17
}
18
19
export fn setNameIndexElement(ni: [*]net_if.if_nameindex_struct, i: usize, if_index: u32, if_name: ?[*:0]u8) void {
20
ni[i].if_index = if_index;
21
ni[i].if_name = if_name;
22
}
23
24
export fn freeNameIndexArray(ni: [*]net_if.if_nameindex_struct) void {
25
var i: usize = 0;
26
while (ni[i].if_index != 0) : (i += 1) {
27
std.c.free(ni[i].if_name);
28
}
29
std.c.free(ni);
30
}
31
32