netsys / netbricks Goto Github PK
View Code? Open in Web Editor NEWNetBricks: A new network function framework based on Rust.
License: ISC License
NetBricks: A new network function framework based on Rust.
License: ISC License
Hi All,
I try to build NetBricks on my machine, but the compiling error of etcdv3-rs keeps occurring.
Could you please provide me any hint to solve the problem. Thanks in advance.
Below is the error info:
SCTP library found
~/dev/NetBricks/framework ~/dev/NetBricks
Compiling etcdv3-rs v0.1.0 (https://github.com/apanda/etcdv3-rs#b99b7919)
error[E0599]: no method named and_then
found for type hyper::client::FutureResponse
in the current scope
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:34:51
|
34 | Box::new(self.client.request(put_request).and_then(
| ^^^^^^^^
|
= help: items from traits can only be used if the trait is in scope
= note: the following trait is implemented but not in scope, perhaps add a use
for it:
candidate #1: use futures::future::Future;
error[E0277]: the trait bound futures::Future<Error=hyper::Error, Item=bool>: std::marker::Sized
is not satisfied
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:34:9
|
34 | Box::new(self.client.request(put_request).and_then(
| ^^^^^^^^ futures::Future<Error=hyper::Error, Item=bool>
does not have a constant size known at compile-time
|
= help: the trait std::marker::Sized
is not implemented for futures::Future<Error=hyper::Error, Item=bool>
= note: required by <std::boxed::Box<T>>::new
error[E0599]: no method named and_then
found for type hyper::client::FutureResponse
in the current scope
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:55:18
|
55 | .and_then(|res| res.body().concat2())
| ^^^^^^^^
|
= help: items from traits can only be used if the trait is in scope
= note: the following trait is implemented but not in scope, perhaps add a use
for it:
candidate #1: use futures::future::Future;
error[E0277]: the trait bound [u8]: std::marker::Sized
is not satisfied
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:56:28
|
56 | .and_then(|body| {
| ^^^^ [u8]
does not have a constant size known at compile-time
|
= help: the trait std::marker::Sized
is not implemented for [u8]
= note: all local variables must have a statically known size
error[E0277]: the trait bound futures::Future<Error=hyper::Error, Item=std::option::Option<std::string::String>>: std::marker::Sized
is not satisfied
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:52:9
|
52 | Box::new(
| ^^^^^^^^ futures::Future<Error=hyper::Error, Item=std::option::Option<std::string::String>>
does not have a constant size known at compile-time
|
= help: the trait std::marker::Sized
is not implemented for futures::Future<Error=hyper::Error, Item=std::option::Option<std::string::String>>
= note: required by <std::boxed::Box<T>>::new
error[E0599]: no method named and_then
found for type hyper::client::FutureResponse
in the current scope
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:82:18
|
82 | .and_then(|res| res.body().concat2())
| ^^^^^^^^
|
= help: items from traits can only be used if the trait is in scope
= note: the following trait is implemented but not in scope, perhaps add a use
for it:
candidate #1: use futures::future::Future;
error[E0277]: the trait bound [u8]: std::marker::Sized
is not satisfied
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:83:28
|
83 | .and_then(|body| {
| ^^^^ [u8]
does not have a constant size known at compile-time
|
= help: the trait std::marker::Sized
is not implemented for [u8]
= note: all local variables must have a statically known size
error[E0277]: the trait bound futures::Future<Error=hyper::Error, Item=std::vec::Vec<(std::string::String, std::string::String)>>: std::marker::Sized
is not satisfied
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:79:9
|
79 | Box::new(
| ^^^^^^^^ futures::Future<Error=hyper::Error, Item=std::vec::Vec<(std::string::String, std::string::String)>>
does not have a constant size known at compile-time
|
= help: the trait std::marker::Sized
is not implemented for futures::Future<Error=hyper::Error, Item=std::vec::Vec<(std::string::String, std::string::String)>>
= note: required by <std::boxed::Box<T>>::new
error[E0599]: no method named and_then
found for type hyper::client::FutureResponse
in the current scope
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:118:18
|
118 | .and_then(|res| res.body().concat2())
| ^^^^^^^^
|
= help: items from traits can only be used if the trait is in scope
= note: the following trait is implemented but not in scope, perhaps add a use
for it:
candidate #1: use futures::future::Future;
error[E0277]: the trait bound [u8]: std::marker::Sized
is not satisfied
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:119:28
|
119 | .and_then(|body| {
| ^^^^ [u8]
does not have a constant size known at compile-time
|
= help: the trait std::marker::Sized
is not implemented for [u8]
= note: all local variables must have a statically known size
error[E0277]: the trait bound futures::Future<Error=hyper::Error, Item=etcd_proto::RangeResponse>: std::marker::Sized
is not satisfied
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:115:9
|
115 | Box::new(
| ^^^^^^^^ futures::Future<Error=hyper::Error, Item=etcd_proto::RangeResponse>
does not have a constant size known at compile-time
|
= help: the trait std::marker::Sized
is not implemented for futures::Future<Error=hyper::Error, Item=etcd_proto::RangeResponse>
= note: required by <std::boxed::Box<T>>::new
error[E0599]: no method named and_then
found for type hyper::client::FutureResponse
in the current scope
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:145:53
|
145 | Box::new(self.client.request(watch_request).and_then(|res| {
| ^^^^^^^^
|
= help: items from traits can only be used if the trait is in scope
= note: the following trait is implemented but not in scope, perhaps add a use
for it:
candidate #1: use futures::future::Future;
error[E0277]: the trait bound [u8]: std::marker::Sized
is not satisfied
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:146:41
|
146 | Ok(Box::new(res.body().map(|chunk| {
| ^^^^^ [u8]
does not have a constant size known at compile-time
|
= help: the trait std::marker::Sized
is not implemented for [u8]
= note: all local variables must have a statically known size
error[E0277]: the trait bound futures::Future<Error=hyper::Error, Item=std::boxed::Box<futures::Stream<Item=etcd_proto::WatchResponse, Error=hyper::Error>>>: std::marker::Sized
is not satisfied
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:145:9
|
145 | Box::new(self.client.request(watch_request).and_then(|res| {
| ^^^^^^^^ futures::Future<Error=hyper::Error, Item=std::boxed::Box<futures::Stream<Item=etcd_proto::WatchResponse, Error=hyper::Error>>>
does not have a constant size known at compile-time
|
= help: the trait std::marker::Sized
is not implemented for futures::Future<Error=hyper::Error, Item=std::boxed::Box<futures::Stream<Item=etcd_proto::WatchResponse, Error=hyper::Error>>>
= note: required by <std::boxed::Box<T>>::new
error[E0599]: no method named and_then
found for type hyper::client::FutureResponse
in the current scope
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:174:53
|
174 | Box::new(self.client.request(watch_request).and_then(|res| {
| ^^^^^^^^
|
= help: items from traits can only be used if the trait is in scope
= note: the following trait is implemented but not in scope, perhaps add a use
for it:
candidate #1: use futures::future::Future;
error[E0277]: the trait bound [u8]: std::marker::Sized
is not satisfied
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:175:41
|
175 | Ok(Box::new(res.body().map(|chunk| {
| ^^^^^ [u8]
does not have a constant size known at compile-time
|
= help: the trait std::marker::Sized
is not implemented for [u8]
= note: all local variables must have a statically known size
error[E0277]: the trait bound futures::Future<Error=hyper::Error, Item=std::boxed::Box<futures::Stream<Item=etcd_proto::WatchResponse, Error=hyper::Error>>>: std::marker::Sized
is not satisfied
--> /home/wenhao/.cargo/git/checkouts/etcdv3-rs-36c166c6e775c7cf/b99b791/src/etcd_actions.rs:174:9
|
174 | Box::new(self.client.request(watch_request).and_then(|res| {
| ^^^^^^^^ futures::Future<Error=hyper::Error, Item=std::boxed::Box<futures::Stream<Item=etcd_proto::WatchResponse, Error=hyper::Error>>>
does not have a constant size known at compile-time
|
= help: the trait std::marker::Sized
is not implemented for futures::Future<Error=hyper::Error, Item=std::boxed::Box<futures::Stream<Item=etcd_proto::WatchResponse, Error=hyper::Error>>>
= note: required by <std::boxed::Box<T>>::new
error: aborting due to 17 previous errors
Some errors occurred: E0277, E0599.
For more information about an error, try rustc --explain E0277
.
error: Could not compile etcdv3-rs
.
Hello,
I was testing the module aclfw, however, I found it cannot work correctly when I wanted to filter a specified source port.
I looked up into the code of ip.rs used by aclfw.
let port_as_u8 = self_as_u8.offset(self.length() as isize);
, the offset value may be wrong. self.length()
is the whole length of ip packet, not the ip header length.
So let dst_port = BigEndian::read_u16(&port_slice[..16]);
gets the wrong value.
Also, port_slice[..16]
may not be right.
Thanks!
I am installing an old RUST build which has a few dependencies. While compiling e2d2 this is the error i get. Can i get around this error without moving to any other build?
Edit: This occurs on the latest build too.
error[E0432]: unresolved import std::alloc::Opaque
--> framework/src/allocators/cache_aligned.rs:1:47
|
1 | use std::alloc::{self, Alloc, Global, Layout, Opaque};
| ^^^^^^ no Opaque
in alloc
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:2:1
|
2 | #![feature(asm)]
| ^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:3:1
|
3 | #![feature(log_syntax)]
| ^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:4:1
|
4 | #![feature(box_syntax)]
| ^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:5:1
|
5 | #![feature(specialization)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:6:1
|
6 | #![feature(slice_concat_ext)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:7:1
|
7 | #![feature(fnbox)]
| ^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:8:1
|
8 | #![feature(alloc)]
| ^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:9:1
|
9 | #![feature(heap_api)]
| ^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:10:1
|
10 | #![feature(unique)]
| ^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:11:1
|
11 | #![feature(const_fn)]
| ^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:13:1
|
13 | #![feature(ptr_internals)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:15:1
|
15 | #![feature(allocator_api)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:17:1
|
17 | #![feature(integer_atomics)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 14 previous errors
#Hi all,
I was build the NetBricks using Rust nightly version. When I run build.sh, however when compiling e2d2 v0.2.0 and DPDK bindings, an error occurred. The log is as below. Thanks!
Compiling e2d2 v0.2.0 (file:///home/tian/NetBricks/framework)
error: failed to run custom build command for `e2d2 v0.2.0 (file:///home/tian/NetBricks/framework)`
process didn't exit successfully: `/home/tian/NetBricks/target/release/build/e2d2-c9809f4dab260928/build-script-build` (exit code: 101)
--- stdout
cargo:rustc-link-search=native=/home/tian/NetBricks/3rdparty/dpdk/build/lib
cargo:rustc-link-search=native=/home/tian/NetBricks/target/native
Header path Some("/home/tian/NetBricks/framework/src/native_include/dpdk-headers.h")
--- stderr
thread 'main' panicked at 'Unable to find libclang: "couldn\'t find any of [\'libclang.so\', \'libclang.so.*\', \'libclang-*.so\'], set the LIBCLANG_PATH environment variable to a path where one of these files can be found (skipped: [])"', /checkout/src/libcore/result.rs:906:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.
When I use apt-get install libclang, errors are like this:
Compiling e2d2 v0.2.0 (file:///home/tian/NetBricks/framework)
error: failed to run custom build command for `e2d2 v0.2.0 (file:///home/tian/NetBricks/framework)`
process didn't exit successfully: `/home/tian/NetBricks/target/release/build/e2d2-c9809f4dab260928/build-script-build` (exit code: 101)
--- stdout
cargo:rustc-link-search=native=/home/tian/NetBricks/3rdparty/dpdk/build/lib
cargo:rustc-link-search=native=/home/tian/NetBricks/target/native
Header path Some("/home/tian/NetBricks/framework/src/native_include/dpdk-headers.h")
--- stderr
/usr/local/lib/clang/7.0.0/include/xmmintrin.h:2968:44: error: token is not a valid binary operator in a preprocessor subexpression
/usr/local/lib/clang/7.0.0/include/emmintrin.h:1414:10: error: invalid conversion between vector type '__m128' (vector of 4 'float' values) and integer type 'int' of different size
/usr/local/lib/clang/7.0.0/include/emmintrin.h:2280:66: error: cannot convert between vector values of different size ('__v16hu' (vector of 16 'unsigned short' values) and 'int')
/usr/local/lib/clang/7.0.0/include/emmintrin.h:2304:64: error: cannot convert between vector values of different size ('__v8su' (vector of 8 'unsigned int' values) and 'int')
/usr/local/lib/clang/7.0.0/include/xmmintrin.h:2968:44: error: token is not a valid binary operator in a preprocessor subexpression, err: true
/usr/local/lib/clang/7.0.0/include/emmintrin.h:1414:10: error: invalid conversion between vector type '__m128' (vector of 4 'float' values) and integer type 'int' of different size, err: true
/usr/local/lib/clang/7.0.0/include/emmintrin.h:2280:66: error: cannot convert between vector values of different size ('__v16hu' (vector of 16 'unsigned short' values) and 'int'), err: true
/usr/local/lib/clang/7.0.0/include/emmintrin.h:2304:64: error: cannot convert between vector values of different size ('__v8su' (vector of 8 'unsigned int' values) and 'int'), err: true
thread 'main' panicked at 'Unable to generate DPDK bindings: ()', /checkout/src/libcore/result.rs:906:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.
I just get this one (the rest pass) while running netbricks on a container:
---- native_include::bindgen_test_layout_max_align_t stdout ----
thread 'native_include::bindgen_test_layout_max_align_t' panicked at 'assertion failed: `(left == right)`
left: `24`,
right: `32`: Size of: max_align_t', /opt/netbricks/target/release/build/e2d2-8829eb254440fd22/out/dpdk_bindings.rs:1535:438
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
1: std::sys_common::backtrace::_print
at libstd/sys_common/backtrace.rs:71
2: std::panicking::default_hook::{{closure}}
at libstd/sys_common/backtrace.rs:59
at libstd/panicking.rs:380
3: std::panicking::default_hook
at libstd/panicking.rs:390
4: std::panicking::rust_panic_with_hook
at libstd/panicking.rs:576
5: std::panicking::begin_panic
at libstd/panicking.rs:537
6: std::panicking::begin_panic_fmt
at libstd/panicking.rs:521
7: e2d2::native_include::bindgen_test_layout_max_align_t
8: <F as alloc::boxed::FnBox<A>>::call_box
at libtest/lib.rs:1462
at /checkout/src/libcore/ops/function.rs:223
at /checkout/src/liballoc/boxed.rs:788
9: __rust_maybe_catch_panic
at libpanic_unwind/lib.rs:102```
on Ubuntu 18.04 LTS, using Rust nightly,
error[E0588]: packed type cannot transitively contain a `[repr(align)]` type
--> framework/src/shared_state/directory.rs:13:1
|
13 | / pub struct DirectoryHeader {
14 | | entries: AtomicUsize,
15 | | // Used to signal that snapshotting is in progress.
16 | | current_version: AtomicUsize,
17 | | committed_version: AtomicUsize,
18 | | length: usize,
19 | | }
| |_^
Hi,
first of all congratulations for this excellent work! I really like your approach of applying functions to packets vs. the traditional transporting packets to functions approach. I think this is absolutely the right way to go.
Just a question to your code in "packet.rs" line 312. In my view this statement "let header=self.payload();" hides the "header"-argument of the push_header function. I commented that line out and the code works fine for me. Or what is the intention of this line of code?
I am following the commands given in the readme file and I am getting the following error when I run
./build.sh build
_### error[E0063]: missing field dpdk_args
in initializer of config::NetbricksConfiguration
_--> src/config/config_reader.rs:290:8
|
290 | Ok(NetbricksConfiguration {
| ^^^^^^^^^^^^^^^^^^^^^^ missing dpdk_args
error: aborting due to previous error
error: Could not compile e2d2
.
To learn more, run the command again with --verbose.__
Am I missing something? Please help me in this regards.
Thanks.
Hi all,
Just a question. I'm trying to understand the inner working of the window stream UDF combined with the packetize abstraction to modify flows on the fly, as suggested in the paper. Is there an example of this? How will the re-packetization will be made regarding, eg. SEQ and ACKs? Will it re-do a 3-way handshake etc?
One example would be rewriting URLs in HTTP flows to use different CDNs.
Thanks for the light,
Tom
Hello~
Do you have plan to support OSX platform? It causes error on build.sh.
(I changed nproc
to sysctl -n hw.physicalcpu
, but it still not work)
Hi, all. I am trying to build NetBrick from scratch. I followed the instructions and encountered a problem after running build.sh, the output is as follows:
sudo ./build.sh
DPDK found not building
Building rust
Done with deps
make: Entering directory '/home/tzhang/NetBricks/native'
make[1]: Nothing to be done for 'all'.
make: Leaving directory '/home/tzhang/NetBricks/native'
make: Entering directory '/home/tzhang/NetBricks/native'
cp libzcsi.so /home/tzhang/NetBricks/target/native
make: Leaving directory '/home/tzhang/NetBricks/native'
SCTP library found
~/NetBricks/framework ~/NetBricks
./build.sh: line 304: build: command not found
Could you help me find out the problem? Thanks a lot!!
Best regards,
Tianzhu
Hi,
I am getting following error while trying to build from the current master.
commit 2e30b8e3b701717bc009d3e18a725cbee25f9f92
Compiling percent-encoding v1.0.0
Compiling simd v0.1.1 (https://github.com/huonw/simd#0d85d25d)
Compiling unreachable v1.0.0
Compiling iovec v0.1.0
Compiling time v0.1.38
Compiling num_cpus v1.6.2
error[E0554]: #[feature] may not be used on the stable release channel
--> /home/gabhijit/.cargo/git/checkouts/simd-a428b8cc9c1d1986/0d85d25/src/lib.rs:19:1
Rust and cargo version
NetBricks$ rustc --version
rustc 1.19.0 (0ade33941 2017-07-17)
NetBricks$ cargo --version
cargo 0.20.0 (a60d185c8 2017-07-13)
NetBricks$
I simply followed - git clone and ./build.sh
. I already had rust installed, so didn't install nightly.
Any ideas?
-abhijit
I use clang 3.9 on Ubuntu, when compiling e2d2 , there are errors like following:
SCTP library found
~/NetBricks/framework ~/NetBricks
Compiling e2d2 v0.2.0 (file:///home/luo/NetBricks/framework)
error[E0432]: unresolved import std::alloc::Alloc
--> framework/src/allocators/cache_aligned.rs:1:24
|
1 | use std::alloc::{self, Alloc, Global, Layout, Opaque};
| ^^^^^ no Alloc
in alloc
error[E0432]: unresolved import std::alloc::Global
--> framework/src/allocators/cache_aligned.rs:1:31
|
1 | use std::alloc::{self, Alloc, Global, Layout, Opaque};
| ^^^^^^ no Global
in alloc
error[E0432]: unresolved import std::alloc::Layout
--> framework/src/allocators/cache_aligned.rs:1:39
|
1 | use std::alloc::{self, Alloc, Global, Layout, Opaque};
| ^^^^^^ no Layout
in alloc
error[E0432]: unresolved import std::alloc::Opaque
--> framework/src/allocators/cache_aligned.rs:1:47
|
1 | use std::alloc::{self, Alloc, Global, Layout, Opaque};
| ^^^^^^ no Opaque
in alloc
error[E0603]: module alloc
is private
--> framework/src/allocators/cache_aligned.rs:1:18
|
1 | use std::alloc::{self, Alloc, Global, Layout, Opaque};
| ^^^^
error[E0603]: module alloc
is private
--> framework/src/allocators/cache_aligned.rs:1:24
|
1 | use std::alloc::{self, Alloc, Global, Layout, Opaque};
| ^^^^^
error[E0603]: module alloc
is private
--> framework/src/allocators/cache_aligned.rs:1:31
|
1 | use std::alloc::{self, Alloc, Global, Layout, Opaque};
| ^^^^^^
error[E0603]: module alloc
is private
--> framework/src/allocators/cache_aligned.rs:1:39
|
1 | use std::alloc::{self, Alloc, Global, Layout, Opaque};
| ^^^^^^
error[E0603]: module alloc
is private
--> framework/src/allocators/cache_aligned.rs:1:47
|
1 | use std::alloc::{self, Alloc, Global, Layout, Opaque};
| ^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:2:1
|
2 | #![feature(asm)]
| ^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:3:1
|
3 | #![feature(log_syntax)]
| ^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:4:1
|
4 | #![feature(box_syntax)]
| ^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:5:1
|
5 | #![feature(specialization)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:6:1
|
6 | #![feature(slice_concat_ext)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:7:1
|
7 | #![feature(fnbox)]
| ^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:8:1
|
8 | #![feature(alloc)]
| ^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:9:1
|
9 | #![feature(heap_api)]
| ^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:10:1
|
10 | #![feature(unique)]
| ^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:11:1
|
11 | #![feature(const_fn)]
| ^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:13:1
|
13 | #![feature(ptr_internals)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:15:1
|
15 | #![feature(allocator_api)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: #![feature] may not be used on the stable release channel
--> framework/src/lib.rs:17:1
|
17 | #![feature(integer_atomics)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 22 previous errors
error: Could not compile e2d2
.
To learn more, run the command again with --verbose.
Hi, I just recognized that the Netbricks master branch uses:
pub struct MBuf {
buf_addr: *mut u8,
phys_addr: usize,
data_off: u16,
refcnt: u16,
nb_segs: u8,
port: u8,
...
}
However in the corresponding 17.08 DPDK header file rte_mbuf.h (see e.g.
http://dpdk.org/browse/dpdk/tree/lib/librte_mbuf/rte_mbuf.h?h=v17.08&id=02657b4adcb8af773e26ec061b01cd7abdd3f0b6) the struct rte_mbuf is using uint_16 for nb_segs and port:
uint16_t nb_segs; /**< Number of segments. */
/** Input port (16 bits to support more than 256 virtual ports). */
uint16_t port;
I am wondering how this can work. Please compare also my branch e2d2-0-1-1 in my fork.
Rainer
I am new for rust , when I run netbricks test cases, these cases are just receive and send on the same phy port. But I have tow phy ports, I want to receive packages on one phy port and send these packages out from the other phy port. just like the real router or NAT do. Can NetBricks do this? Can you gave me one example? Thanks!
Hi
I wanted to know if it is possible to use dpdk's EAL arguments with these functions. For example I want to use --socket-mem
,-b
(blacklist ports), -n
(memory channels), and --xen-dom0
. I experimented a little bit but couldn't find anything. I think the -f 'config' command does not allow for these parameters either correct?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.