aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/old/vlib/net/conv/conv_default.c.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/old/vlib/net/conv/conv_default.c.v')
-rw-r--r--v_windows/v/old/vlib/net/conv/conv_default.c.v46
1 files changed, 46 insertions, 0 deletions
diff --git a/v_windows/v/old/vlib/net/conv/conv_default.c.v b/v_windows/v/old/vlib/net/conv/conv_default.c.v
new file mode 100644
index 0000000..8e8c582
--- /dev/null
+++ b/v_windows/v/old/vlib/net/conv/conv_default.c.v
@@ -0,0 +1,46 @@
+module conv
+
+#include <arpa/inet.h>
+
+fn C.htonl(host u32) u32
+fn C.htons(host u16) u16
+
+fn C.ntohl(net u32) u32
+fn C.ntohs(net u16) u16
+
+struct Bytes {
+mut:
+ first u32
+ last u32
+}
+
+union LongLong {
+ Bytes
+ ll u64
+}
+
+// host to net 64 (htonll)
+pub fn htn64(host &u64) u64 {
+ mut ll := LongLong{
+ ll: host
+ }
+
+ unsafe {
+ ll.first = htn32(ll.first)
+ ll.last = htn32(ll.last)
+ }
+ return unsafe { ll.ll }
+}
+
+// net to host 64 (ntohll)
+pub fn nth64(net &u64) u64 {
+ mut ll := LongLong{
+ ll: net
+ }
+
+ unsafe {
+ ll.first = nth32(ll.first)
+ ll.last = nth32(ll.last)
+ }
+ return unsafe { ll.ll }
+}