Commit cb649b769c

Luna <git@l4.pm>
2020-03-30 22:06:45
Fix ifreq definition
1 parent c50ac9a
Changed files (2)
lib
std
lib/std/os/bits/linux.zig
@@ -1709,31 +1709,31 @@ pub const termios = extern struct {
 pub const SIOCGIFINDEX = 0x8933;
 pub const IFNAMESIZE = 16;
 
-pub const ifmap = struct {
-    mem_start: u32,
-    mem_end: u32,
-    base_addr: i16,
+pub const ifmap = extern struct {
+    mem_start: c_ulong,
+    mem_end: c_ulong,
+    base_addr: c_ushort,
     irq: u8,
     dma: u8,
     port: u8,
 };
 
-pub const ifreq = extern union {
-    ifr_ifrn: struct {
+pub const ifreq = extern struct {
+    ifr_ifrn: extern union {
         name: [IFNAMESIZE]u8,
     },
-    ifr_ifru: struct {
+    ifr_ifru: extern union {
         ifru_addr: sockaddr,
         ifru_dstaddr: sockaddr,
         ifru_broadaddr: sockaddr,
         ifru_netmask: sockaddr,
         ifru_hwaddr: sockaddr,
-        ifru_flags: i16,
+        ifru_flags: c_short,
         ifru_ivalue: i32,
         ifru_mtu: i32,
         ifru_map: ifmap,
         ifru_slave: [IFNAMESIZE]u8,
         ifru_newname: [IFNAMESIZE]u8,
-        ifru_data: [*:0]u8,
+        ifru_data: [*c]u8,
     },
 };
lib/std/net.zig
@@ -551,7 +551,7 @@ fn if_nametoindex(name: []const u8) !u32 {
         else => {},
     }
 
-    std.debug.warn("ival={}\n", .{ifr.ifr_ifru.ifru_ivalue});
+    std.debug.warn("ival={}, rest={}\n", .{ ifr.ifr_ifru.ifru_ivalue, ifr.ifr_ifru });
 
     return @bitCast(u32, ifr.ifr_ifru.ifru_ivalue);
 }