Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
session udp: add len check for tx dgrams
[vpp.git]
/
src
/
vnet
/
session
/
application_interface.h
diff --git
a/src/vnet/session/application_interface.h
b/src/vnet/session/application_interface.h
index
733a462
..
138953b
100644
(file)
--- a/
src/vnet/session/application_interface.h
+++ b/
src/vnet/session/application_interface.h
@@
-232,7
+232,8
@@
typedef enum
_ (USE_GLOBAL_SCOPE, "App can use global session scope") \
_ (USE_LOCAL_SCOPE, "App can use local session scope") \
_ (EVT_MQ_USE_EVENTFD, "Use eventfds for signaling") \
_ (USE_GLOBAL_SCOPE, "App can use global session scope") \
_ (USE_LOCAL_SCOPE, "App can use local session scope") \
_ (EVT_MQ_USE_EVENTFD, "Use eventfds for signaling") \
- _ (MEMFD_FOR_BUILTIN, "Use memfd for builtin app segs")
+ _ (MEMFD_FOR_BUILTIN, "Use memfd for builtin app segs") \
+ _ (USE_HUGE_PAGE, "Use huge page for FIFO")
typedef enum _app_options
{
typedef enum _app_options
{
@@
-287,6
+288,8
@@
int vnet_app_del_cert_key_pair (u32 index);
/** Ask for app cb on pair deletion */
int vnet_app_add_cert_key_interest (u32 index, u32 app_index);
/** Ask for app cb on pair deletion */
int vnet_app_add_cert_key_interest (u32 index, u32 app_index);
+uword unformat_vnet_uri (unformat_input_t *input, va_list *args);
+
typedef struct app_session_transport_
{
ip46_address_t rmt_ip; /**< remote ip */
typedef struct app_session_transport_
{
ip46_address_t rmt_ip; /**< remote ip */
@@
-613,8
+616,8
@@
app_send_io_evt_to_vpp (svm_msg_q_t * mq, u32 session_index, u8 evt_type,
{
if (svm_msg_q_try_lock (mq))
return -1;
{
if (svm_msg_q_try_lock (mq))
return -1;
- if (PREDICT_FALSE (
svm_msg_q_ring_is_full (mq, SESSION_MQ_IO_EVT_RING)
-
|| svm_msg_q_is_full (mq
)))
+ if (PREDICT_FALSE (
+
svm_msg_q_or_ring_is_full (mq, SESSION_MQ_IO_EVT_RING
)))
{
svm_msg_q_unlock (mq);
return -2;
{
svm_msg_q_unlock (mq);
return -2;
@@
-629,9
+632,8
@@
app_send_io_evt_to_vpp (svm_msg_q_t * mq, u32 session_index, u8 evt_type,
else
{
svm_msg_q_lock (mq);
else
{
svm_msg_q_lock (mq);
- while (svm_msg_q_ring_is_full (mq, SESSION_MQ_IO_EVT_RING)
- || svm_msg_q_is_full (mq))
- svm_msg_q_wait_prod (mq);
+ while (svm_msg_q_or_ring_is_full (mq, SESSION_MQ_IO_EVT_RING))
+ svm_msg_q_or_ring_wait_prod (mq, SESSION_MQ_IO_EVT_RING);
msg = svm_msg_q_alloc_msg_w_ring (mq, SESSION_MQ_IO_EVT_RING);
evt = (session_event_t *) svm_msg_q_msg_data (mq, &msg);
evt->session_index = session_index;
msg = svm_msg_q_alloc_msg_w_ring (mq, SESSION_MQ_IO_EVT_RING);
evt = (session_event_t *) svm_msg_q_msg_data (mq, &msg);
evt->session_index = session_index;
@@
-641,14
+643,18
@@
app_send_io_evt_to_vpp (svm_msg_q_t * mq, u32 session_index, u8 evt_type,
}
}
}
}
+#define app_send_dgram_raw(f, at, vpp_evt_q, data, len, evt_type, do_evt, \
+ noblock) \
+ app_send_dgram_raw_gso (f, at, vpp_evt_q, data, len, 0, evt_type, do_evt, \
+ noblock)
+
always_inline int
always_inline int
-app_send_dgram_raw
(svm_fifo_t * f, app_session_transport_t *
at,
-
svm_msg_q_t * vpp_evt_q, u8 * data, u32 len, u8 evt_type
,
- u8 do_evt, u8 noblock)
+app_send_dgram_raw
_gso (svm_fifo_t *f, app_session_transport_t *
at,
+
svm_msg_q_t *vpp_evt_q, u8 *data, u32 len
,
+
u16 gso_size, u8 evt_type,
u8 do_evt, u8 noblock)
{
session_dgram_hdr_t hdr;
int rv;
{
session_dgram_hdr_t hdr;
int rv;
-
if (svm_fifo_max_enqueue_prod (f) < (sizeof (session_dgram_hdr_t) + len))
return 0;
if (svm_fifo_max_enqueue_prod (f) < (sizeof (session_dgram_hdr_t) + len))
return 0;
@@
-659,7
+665,7
@@
app_send_dgram_raw (svm_fifo_t * f, app_session_transport_t * at,
hdr.rmt_port = at->rmt_port;
clib_memcpy_fast (&hdr.lcl_ip, &at->lcl_ip, sizeof (ip46_address_t));
hdr.lcl_port = at->lcl_port;
hdr.rmt_port = at->rmt_port;
clib_memcpy_fast (&hdr.lcl_ip, &at->lcl_ip, sizeof (ip46_address_t));
hdr.lcl_port = at->lcl_port;
-
+ hdr.gso_size = gso_size;
/* *INDENT-OFF* */
svm_fifo_seg_t segs[2] = {{ (u8 *) &hdr, sizeof (hdr) }, { data, len }};
/* *INDENT-ON* */
/* *INDENT-OFF* */
svm_fifo_seg_t segs[2] = {{ (u8 *) &hdr, sizeof (hdr) }, { data, len }};
/* *INDENT-ON* */