Hi, all I would like to send packet in timer func, and i followed func "send_dhcp_pkt" to build a frame. But the packet did not come out through nic. Bellow is my func, ping works between those two ip addresses, is there anything missed, any tools could help me? thanks.
void ip4_time_out(void) { u32 radlen; u32 * to_output; u32 bi0; vlib_buffer_t *b0; vlib_frame_t *f; unsigned char *rad0 = NULL; ip4_header_t *ip40; udp_header_t *udp0; vlib_main_t * vm = vlib_get_main(); /* speculatively enqueue b0 to the current next frame */ if (vlib_buffer_alloc (vm, &bi0, 1) == 1) { b0 = vlib_get_buffer (vm, bi0); vnet_buffer(b0)->sw_if_index[VLIB_RX] = 1; vnet_buffer(b0)->sw_if_index[VLIB_TX] = ~0; f = vlib_get_frame_to_node (vm, ip4_lookup_node.index); to_output = vlib_frame_vector_args (f); to_output[0] = bi0; f->n_vectors = 1; vlib_put_frame_to_node(vm, ip4_lookup_node.index, f); vlib_buffer_advance(b0, sizeof(ethernet_header_t)); ip40 = vlib_buffer_get_current (b0); vlib_buffer_advance (b0, sizeof (*ip40)); udp0 = vlib_buffer_get_current (b0); vlib_buffer_advance (b0, sizeof (*udp0)); rad0= vlib_buffer_get_current (b0); ip40->dst_address.as_u32 = inet_addr("192.168.118.1"); ip40->src_address.as_u32 = inet_addr("192.168.118.131"); udp0->src_port = clib_host_to_net_u16(2000); udp0->dst_port = clib_host_to_net_u16(1812); strcpy((char*)rad0, "test-username-test-password~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); radlen = 200; udp0->checksum = ip4_tcp_udp_com_checksum (vm, b0); ip40->length = clib_host_to_net_u16 (radlen + sizeof (ip4_header_t) + sizeof (udp0)); ip40->checksum = ip4_header_checksum (ip40); b0->current_length = radlen + sizeof (ip4_header_t) + sizeof (udp0); //vlib_put_frame_to_node(vm, ip4_lookup_node.index, f); } } yug...@telincn.com
_______________________________________________ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev