#![allow(dead_code, unused_imports)]
use super::{black_box, path, read_slice_bounds, touch_slice_bounds};
use crate::{
core::view::View,
dataplane_path::{
standard::view::{HopFieldView, InfoFieldView},
view::{ScionDpPathView, ScionDpPathViewRef, ScionDpPathViewRefMut},
},
header::view::ScionHeaderView,
};
pub fn exec_every_view_function(view: &mut ScionHeaderView) {
black_box(view.version());
black_box(view.traffic_class());
black_box(view.flow_id());
black_box(view.next_header());
black_box(view.payload_len());
black_box(view.header_len());
black_box(view.path_type());
black_box(view.path_type_range());
black_box(view.dst_addr_type());
black_box(view.src_addr_type());
view.set_version(black_box(view.version()));
view.set_traffic_class(black_box(view.traffic_class()));
view.set_flow_id(black_box(view.flow_id()));
view.set_next_header(black_box(view.next_header()));
unsafe {
view.set_payload_len(black_box(view.payload_len()));
view.set_header_len(black_box(view.header_len()));
view.set_path_type(black_box(view.path_type()));
view.set_dst_addr_type(black_box(view.dst_addr_type()));
view.set_src_addr_type(black_box(view.src_addr_type()));
}
black_box(view.dst_ia());
black_box(view.dst_isd());
black_box(view.dst_as());
black_box(view.src_ia());
black_box(view.src_isd());
black_box(view.src_as());
let _ = black_box(view.dst_host_addr());
let _ = black_box(view.src_host_addr());
black_box(view.src_host_addr_range());
view.set_src_isd(black_box(view.src_isd()));
view.set_src_as(black_box(view.src_as()));
view.set_dst_isd(black_box(view.dst_isd()));
view.set_dst_as(black_box(view.dst_as()));
match view.path() {
ScionDpPathViewRef::Standard(p) => path::exec_standard_path_view(p),
ScionDpPathViewRef::OneHop(p) => path::exec_onehop_path_view(p),
ScionDpPathViewRef::Unsupported { path_type: _, data } => {
read_slice_bounds(data);
}
ScionDpPathViewRef::Empty => {}
}
match view.path_mut() {
ScionDpPathViewRefMut::Standard(p) => path::exec_standard_path_view_mut(p),
ScionDpPathViewRefMut::OneHop(p) => path::exec_onehop_path_view_mut(p),
ScionDpPathViewRefMut::Unsupported { path_type: _, buf } => {
touch_slice_bounds(buf);
}
ScionDpPathViewRefMut::Empty => {}
}
}