49 round_pow2 (most_likely_size,
sizeof (rw0[0])) /
sizeof (rw0[0]);
70 vnet_rewrite_header_t *rw = va_arg (*args, vnet_rewrite_header_t *);
71 u32 max_data_bytes = va_arg (*args,
u32);
75 if (rw->sw_if_index != ~0)
82 s =
format (s,
"DELETED:%d", rw->sw_if_index);
85 s =
format (s,
" mtu:%d", rw->max_l3_packet_bytes);
88 if (rw->data_bytes > 0)
91 rw->data + max_data_bytes - rw->data_bytes, rw->data_bytes);
107 u32 this_node,
u32 next_node, vnet_rewrite_header_t * rw)
109 rw->sw_if_index = sw_if_index;
111 rw->max_l3_packet_bytes =
117 vnet_rewrite_header_t * rw)
119 rw->max_l3_packet_bytes =
130 vnet_rewrite_header_t * rw,
131 u32 max_rewrite_bytes)
143 ASSERT (hc->build_rewrite);
144 rewrite = hc->build_rewrite (vnm, sw_if_index, link_type, dst_address);
155 u32 rewrite_node_index,
156 u32 post_rewrite_node_index,
157 vnet_rewrite_header_t * rw,
158 u8 * rewrite_data,
u32 rewrite_length)
166 rw->sw_if_index = tx_sw_if_index;
168 post_rewrite_node_index);
169 rw->max_l3_packet_bytes = (
u16) ~ 0;
171 ASSERT (rewrite_length <
sizeof (adj->rewrite_data));
174 rewrite_data, rewrite_length);
180 vnet_rewrite_header_t *rw = va_arg (*va, vnet_rewrite_header_t *);
181 u32 max_data_bytes = va_arg (*va,
u32);
187 sizeof (rw->max_l3_packet_bytes));
196 vnet_rewrite_header_t *rw = va_arg (*va, vnet_rewrite_header_t *);
197 u32 max_data_bytes = va_arg (*va,
u32);
206 sizeof (rw->max_l3_packet_bytes));
216 const void *dst_address)
222 ASSERT (hc->build_rewrite);
223 return (hc->build_rewrite (vnm, sw_if_index, link_type, dst_address));
235 ASSERT (hc->update_adjacency);
236 hc->update_adjacency (vnm, sw_if_index, ai);
vnet_main_t * vnet_get_main(void)
static vnet_hw_interface_t * vnet_get_sup_hw_interface(vnet_main_t *vnm, u32 sw_if_index)
Definitions for all things IP (v4|v6) unicast and multicast lookup related.
uword vnet_rewrite_data_t
void vnet_rewrite_for_sw_interface(vnet_main_t *vnm, vnet_link_t link_type, u32 sw_if_index, u32 node_index, void *dst_address, vnet_rewrite_header_t *rw, u32 max_rewrite_bytes)
Deprecated.
static u32 vnet_sw_interface_get_mtu(vnet_main_t *vnm, u32 sw_if_index, vnet_mtu_t af)
static uword vlib_node_add_next(vlib_main_t *vm, uword node, uword next_node)
void serialize_vnet_rewrite(serialize_main_t *m, va_list *va)
void unserialize_vnet_rewrite(serialize_main_t *m, va_list *va)
static void * serialize_get(serialize_main_t *m, uword n_bytes)
static void vnet_rewrite_copy_one(vnet_rewrite_data_t *p0, vnet_rewrite_data_t *rw0, int i)
void vnet_update_adjacency_for_sw_interface(vnet_main_t *vnm, u32 sw_if_index, u32 ai)
format_function_t format_vnet_sw_interface_name
void vnet_rewrite_copy_slow_path(vnet_rewrite_data_t *p0, vnet_rewrite_data_t *rw0, word n_left, uword most_likely_size)
static void * vnet_rewrite_get_data_internal(vnet_rewrite_header_t *rw, int max_size)
u8 * vnet_build_rewrite_for_sw_interface(vnet_main_t *vnm, u32 sw_if_index, vnet_link_t link_type, const void *dst_address)
static void * unserialize_get(serialize_main_t *m, uword n_bytes)
void vnet_rewrite_for_tunnel(vnet_main_t *vnm, u32 tx_sw_if_index, u32 rewrite_node_index, u32 post_rewrite_node_index, vnet_rewrite_header_t *rw, u8 *rewrite_data, u32 rewrite_length)
u8 * format_vnet_rewrite(u8 *s, va_list *args)
void vnet_rewrite_init(vnet_main_t *vnm, u32 sw_if_index, vnet_link_t linkt, u32 this_node, u32 next_node, vnet_rewrite_header_t *rw)
#define vec_free(V)
Free vector's memory (no header).
u32 vnet_tx_node_index_for_sw_interface(vnet_main_t *vnm, u32 sw_if_index)
static void vnet_rewrite_set_data_internal(vnet_rewrite_header_t *rw, int max_size, void *data, int data_bytes)
#define clib_memcpy(a, b, c)
static vnet_sw_interface_t * vnet_get_sw_interface_safe(vnet_main_t *vnm, u32 sw_if_index)
static void unserialize_integer(serialize_main_t *m, void *x, u32 n_bytes)
static void serialize_integer(serialize_main_t *m, u64 x, u32 n_bytes)
static uword round_pow2(uword x, uword pow2)
enum vnet_link_t_ vnet_link_t
Link Type: A description of the protocol of packets on the link.
static vnet_hw_interface_class_t * vnet_get_hw_interface_class(vnet_main_t *vnm, u32 hw_class_index)
struct _vnet_hw_interface_class vnet_hw_interface_class_t
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
vnet_mtu_t vnet_link_to_mtu(vnet_link_t link)
void vnet_rewrite_update_mtu(vnet_main_t *vnm, vnet_link_t linkt, vnet_rewrite_header_t *rw)