From e38b0d7e9f413ea7f63660090ee5b82bf0fc981c Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Wed, 21 Jul 2021 14:29:38 +0300 Subject: [PATCH] net: freebsd fixes --- ROADMAP.md | 7 ++-- vlib/net/address_freebsd.c.v | 66 ++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 vlib/net/address_freebsd.c.v diff --git a/ROADMAP.md b/ROADMAP.md index d6c1abc53c..ae3300f0e8 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,5 +1,6 @@ ## [Version 0.3](https://github.com/vlang/v/projects/5) - [ ] [make `-autofree` the default](https://github.com/vlang/v/issues/6989) +- [x] [gc option] - [ ] [coroutines](https://github.com/vlang/v/issues/561) - [x] channels - [x] lock{} @@ -12,7 +13,9 @@ - [x] fix `byte.str()` - [x] maps with non-string keys - [x] iOS/Android support -- [ ] parallel parser (and maybe checker/gen?) +- [ ] parallel parser +- [ ] parallel checker +- [ ] parallel cgen - [ ] `recover()` from panics - [x] IO streams - [x] struct embedding @@ -23,7 +26,7 @@ - [x] short generics syntax (`foo(5)` instead of `foo(5)`) - [ ] fix all remaining generics issues - [ ] merge v.c and v_win.c -- [ ] more advanced errors, not just `error('message')` +- [x] more advanced errors, not just `error('message')` - [ ] VLS for autocomplete, refactoring, go to definition etc - [ ] Recursive structs via optionals: `struct Node { next ?Node }` - [ ] Remove `foo = 0` for `&Foo` diff --git a/vlib/net/address_freebsd.c.v b/vlib/net/address_freebsd.c.v new file mode 100644 index 0000000000..e8e79894e0 --- /dev/null +++ b/vlib/net/address_freebsd.c.v @@ -0,0 +1,66 @@ +module net + +#include +#include + +const max_unix_path = 108 + +struct C.addrinfo { +mut: + ai_family int + ai_socktype int + ai_flags int + ai_protocol int + ai_addrlen int + ai_addr voidptr + ai_canonname voidptr + ai_next voidptr +} + +struct C.sockaddr_in { + sin_family u16 + sin_port u16 + sin_addr u32 +} + +struct C.sockaddr_in6 { + sin6_family u16 + sin6_port u16 + sin6_addr [4]u32 +} + +struct C.sockaddr_un { + sun_family u16 + sun_path [max_unix_path]char +} + +[_pack: '1'] +struct Ip6 { + port u16 + flow_info u32 + addr [16]byte + scope_id u32 +} + +[_pack: '1'] +struct Ip { + port u16 + addr [4]byte + // Pad to size so that socket functions + // dont complain to us (see in.h and bind()) + // TODO(emily): I would really like to use + // some constant calculations here + // so that this doesnt have to be hardcoded + sin_pad [8]byte +} + +struct Unix { + path [max_unix_path]byte +} + +[_pack: '1'] +struct Addr { +pub: + f u16 + addr AddrData +}