X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvcl%2Fvppcom.c;h=70afdce78325e12505d18a6f46969365fed05630;hb=34a3a08d993cbbb3846b83b69b5338d452463e15;hp=f1c58c4f2bd70bb85d75207cb99a99d7b5aa2102;hpb=a7a1a22673e029d59f52422263076aaaab81a046;p=vpp.git diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c index f1c58c4f2bd..70afdce7832 100644 --- a/src/vcl/vppcom.c +++ b/src/vcl/vppcom.c @@ -1191,7 +1191,7 @@ vppcom_session_bind (uint32_t session_handle, vppcom_endpt_t * ep) format_ip46_address, &session->transport.lcl_ip, session->transport.is_ip4 ? IP46_TYPE_IP4 : IP46_TYPE_IP6, clib_net_to_host_u16 (session->transport.lcl_port), - session->session_type ? "UDP" : "TCP"); + vppcom_proto_str (session->session_type)); vcl_evt (VCL_EVT_BIND, session); if (session->session_type == VPPCOM_PROTO_UDP) @@ -1246,6 +1246,55 @@ vppcom_session_listen (uint32_t listen_sh, uint32_t q_len) return VPPCOM_OK; } +int +vppcom_session_tls_add_cert (uint32_t session_handle, char *cert, + uint32_t cert_len) +{ + + vcl_worker_t *wrk = vcl_worker_get_current (); + vcl_session_t *session = 0; + + session = vcl_session_get_w_handle (wrk, session_handle); + if (!session) + return VPPCOM_EBADFD; + + if (cert_len == 0 || cert_len == ~0) + return VPPCOM_EBADFD; + + /* + * Send listen request to vpp and wait for reply + */ + vppcom_send_application_tls_cert_add (session, cert, cert_len); + + return VPPCOM_OK; + +} + +int +vppcom_session_tls_add_key (uint32_t session_handle, char *key, + uint32_t key_len) +{ + + vcl_worker_t *wrk = vcl_worker_get_current (); + vcl_session_t *session = 0; + + session = vcl_session_get_w_handle (wrk, session_handle); + if (!session) + return VPPCOM_EBADFD; + + if (key_len == 0 || key_len == ~0) + return VPPCOM_EBADFD; + + /* + * Send listen request to vpp and wait for reply + */ + vppcom_send_application_tls_key_add (session, key, key_len); + + return VPPCOM_OK; + + +} + static int validate_args_session_accept_ (vcl_worker_t * wrk, vcl_session_t * listen_session) @@ -1420,7 +1469,7 @@ vppcom_session_connect (uint32_t session_handle, vppcom_endpt_t * server_ep) &session->transport.rmt_ip, session->transport.is_ip4 ? IP46_TYPE_IP4 : IP46_TYPE_IP6, clib_net_to_host_u16 (session->transport.rmt_port), - session->session_type ? "UDP" : "TCP", session->session_state, + vppcom_proto_str (session->session_type), session->session_state, vppcom_session_state_str (session->session_state)); return VPPCOM_OK; } @@ -1442,7 +1491,7 @@ vppcom_session_connect (uint32_t session_handle, vppcom_endpt_t * server_ep) &session->transport.rmt_ip, session->transport.is_ip4 ? IP46_TYPE_IP4 : IP46_TYPE_IP6, clib_net_to_host_u16 (session->transport.rmt_port), - session->session_type ? "UDP" : "TCP"); + vppcom_proto_str (session->session_type)); /* * Send connect request and wait for reply from vpp @@ -1944,7 +1993,7 @@ vcl_select_handle_mq_event (vcl_worker_t * wrk, session_event_t * e, break; if (sid < n_bits && read_map) { - clib_bitmap_set_no_check (read_map, sid, 1); + clib_bitmap_set_no_check ((uword *) read_map, sid, 1); *bits_set += 1; } break; @@ -1955,7 +2004,7 @@ vcl_select_handle_mq_event (vcl_worker_t * wrk, session_event_t * e, break; if (sid < n_bits && write_map) { - clib_bitmap_set_no_check (write_map, sid, 1); + clib_bitmap_set_no_check ((uword *) write_map, sid, 1); *bits_set += 1; } break; @@ -1967,7 +2016,7 @@ vcl_select_handle_mq_event (vcl_worker_t * wrk, session_event_t * e, sid = session->session_index; if (sid < n_bits && read_map) { - clib_bitmap_set_no_check (read_map, sid, 1); + clib_bitmap_set_no_check ((uword *) read_map, sid, 1); *bits_set += 1; } break; @@ -1978,7 +2027,7 @@ vcl_select_handle_mq_event (vcl_worker_t * wrk, session_event_t * e, sid = session->session_index; if (sid < n_bits && write_map) { - clib_bitmap_set_no_check (write_map, sid, 1); + clib_bitmap_set_no_check ((uword *) write_map, sid, 1); *bits_set += 1; } break; @@ -1990,7 +2039,7 @@ vcl_select_handle_mq_event (vcl_worker_t * wrk, session_event_t * e, sid = session->session_index; if (sid < n_bits && read_map) { - clib_bitmap_set_no_check (read_map, sid, 1); + clib_bitmap_set_no_check ((uword *) read_map, sid, 1); *bits_set += 1; } break; @@ -2006,7 +2055,7 @@ vcl_select_handle_mq_event (vcl_worker_t * wrk, session_event_t * e, sid = session->session_index; if (sid < n_bits && except_map) { - clib_bitmap_set_no_check (except_map, sid, 1); + clib_bitmap_set_no_check ((uword *) except_map, sid, 1); *bits_set += 1; } break; @@ -2014,7 +2063,7 @@ vcl_select_handle_mq_event (vcl_worker_t * wrk, session_event_t * e, sid = vcl_session_reset_handler (wrk, (session_reset_msg_t *) e->data); if (sid < n_bits && except_map) { - clib_bitmap_set_no_check (except_map, sid, 1); + clib_bitmap_set_no_check ((uword *) except_map, sid, 1); *bits_set += 1; } break; @@ -2144,30 +2193,35 @@ vppcom_select (unsigned long n_bits, unsigned long *read_map, vcl_session_t *session = 0; int rv, i; - ASSERT (sizeof (clib_bitmap_t) == sizeof (long int)); + STATIC_ASSERT (sizeof (clib_bitmap_t) == sizeof (unsigned long), + "vppcom bitmap size mismatch"); + STATIC_ASSERT (sizeof (clib_bitmap_t) == sizeof (fd_mask), + "vppcom bitmap size mismatch"); + STATIC_ASSERT (sizeof (clib_bitmap_t) == sizeof (uword), + "vppcom bitmap size mismatch"); if (n_bits && read_map) { clib_bitmap_validate (wrk->rd_bitmap, minbits); clib_memcpy_fast (wrk->rd_bitmap, read_map, - vec_len (wrk->rd_bitmap) * sizeof (clib_bitmap_t)); - memset (read_map, 0, vec_len (wrk->rd_bitmap) * sizeof (clib_bitmap_t)); + vec_len (wrk->rd_bitmap) * sizeof (unsigned long)); + memset (read_map, 0, vec_len (wrk->rd_bitmap) * sizeof (unsigned long)); } if (n_bits && write_map) { clib_bitmap_validate (wrk->wr_bitmap, minbits); clib_memcpy_fast (wrk->wr_bitmap, write_map, - vec_len (wrk->wr_bitmap) * sizeof (clib_bitmap_t)); + vec_len (wrk->wr_bitmap) * sizeof (unsigned long)); memset (write_map, 0, - vec_len (wrk->wr_bitmap) * sizeof (clib_bitmap_t)); + vec_len (wrk->wr_bitmap) * sizeof (unsigned long)); } if (n_bits && except_map) { clib_bitmap_validate (wrk->ex_bitmap, minbits); clib_memcpy_fast (wrk->ex_bitmap, except_map, - vec_len (wrk->ex_bitmap) * sizeof (clib_bitmap_t)); + vec_len (wrk->ex_bitmap) * sizeof (unsigned long)); memset (except_map, 0, - vec_len (wrk->ex_bitmap) * sizeof (clib_bitmap_t)); + vec_len (wrk->ex_bitmap) * sizeof (unsigned long)); } if (!n_bits) @@ -2188,7 +2242,7 @@ vppcom_select (unsigned long n_bits, unsigned long *read_map, rv = svm_fifo_is_full (session->tx_fifo); if (!rv) { - clib_bitmap_set_no_check (write_map, sid, 1); + clib_bitmap_set_no_check ((uword*)write_map, sid, 1); bits_set++; } })); @@ -2208,7 +2262,7 @@ check_rd: rv = vppcom_session_read_ready (session); if (rv) { - clib_bitmap_set_no_check (read_map, sid, 1); + clib_bitmap_set_no_check ((uword*)read_map, sid, 1); bits_set++; } }));