+ .get_half_open = udp_session_get_half_open,
+ .close = udp_session_close,
+ .cleanup = udp_session_cleanup,
+ .send_mss = udp_send_mss,
+ .send_space = udp_send_space,
+ .format_connection = format_udp_session,
+ .format_half_open = format_udp_half_open_session,
+ .format_listener = format_udp_listener_session,
+ .tx_type = TRANSPORT_TX_DGRAM,
+ .service_type = TRANSPORT_SERVICE_CL,
+};
+/* *INDENT-ON* */
+
+
+int
+udpc_connection_open (transport_endpoint_t * rmt)
+{
+ udp_connection_t *uc;
+ u32 uc_index;
+ uc_index = udp_open_connection (rmt);
+ uc = udp_connection_get (uc_index, vlib_get_thread_index ());
+ uc->is_connected = 1;
+ return uc_index;
+}
+
+u32
+udpc_connection_listen (u32 session_index, transport_endpoint_t * lcl)
+{
+ udp_connection_t *listener;
+ u32 li;
+ li = udp_session_bind (session_index, lcl);
+ listener = udp_listener_get (li);
+ listener->is_connected = 1;
+ return li;
+}
+
+/* *INDENT-OFF* */
+const static transport_proto_vft_t udpc_proto = {
+ .bind = udpc_connection_listen,
+ .open = udpc_connection_open,
+ .unbind = udp_session_unbind,
+ .push_header = udp_push_header,
+ .get_connection = udp_session_get,
+ .get_listener = udp_session_get_listener,
+ .get_half_open = udp_session_get_half_open,