FD.io VPP  v21.06-3-gbb25fbf28
Vector Packet Processing
http_server.c File Reference
+ Include dependency graph for http_server.c:

Go to the source code of this file.

Data Structures

struct  http_server_args
 
struct  http_session_t
 Application session. More...
 
struct  http_server_main_t
 

Enumerations

enum  http_process_event_t { EVENT_WAKEUP = 1 }
 
enum  http_session_state_t {
  HTTP_STATE_CLOSED, HTTP_STATE_ESTABLISHED, HTTP_STATE_OK_SENT, HTTP_STATE_CLOSED,
  HTTP_STATE_ESTABLISHED, HTTP_STATE_OK_SENT, HTTP_STATE_SEND_MORE_DATA, HTTP_STATE_N_STATES
}
 

Functions

static void http_server_sessions_reader_lock (void)
 
static void http_server_sessions_reader_unlock (void)
 
static void http_server_sessions_writer_lock (void)
 
static void http_server_sessions_writer_unlock (void)
 
static http_session_thttp_server_session_alloc (u32 thread_index)
 
static http_session_thttp_server_session_get (u32 thread_index, u32 hs_index)
 
static void http_server_session_free (http_session_t *hs)
 
static void http_server_session_lookup_add (u32 thread_index, u32 s_index, u32 hs_index)
 
static void http_server_session_lookup_del (u32 thread_index, u32 s_index)
 
static http_session_thttp_server_session_lookup (u32 thread_index, u32 s_index)
 
static void http_server_session_timer_start (http_session_t *hs)
 
static void http_server_session_timer_stop (http_session_t *hs)
 
static void http_server_session_disconnect (http_session_t *hs)
 
static void http_process_free (http_server_args *args)
 
static void http_cli_output (uword arg, u8 *buffer, uword buffer_bytes)
 
void send_data (http_session_t *hs, u8 *data)
 
static void send_error (http_session_t *hs, char *str)
 
static uword http_cli_process (vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f)
 
static void alloc_http_process (http_server_args *args)
 
static void alloc_http_process_callback (void *cb_args)
 
static int session_rx_request (http_session_t *hs)
 
static int http_server_rx_callback (session_t *s)
 
static int http_server_rx_callback_static (session_t *s)
 
static int http_server_session_accept_callback (session_t *s)
 
static void http_server_session_disconnect_callback (session_t *s)
 
static void http_server_session_reset_callback (session_t *s)
 
static int http_server_session_connected_callback (u32 app_index, u32 api_context, session_t *s, session_error_t err)
 
static int http_server_add_segment_callback (u32 client_index, u64 segment_handle)
 
static void http_server_cleanup_callback (session_t *s, session_cleanup_ntf_t ntf)
 
static int http_server_attach ()
 
static int http_transport_needs_crypto (transport_proto_t proto)
 
static int http_server_listen ()
 
static void http_server_session_close_cb (void *hs_handlep)
 
static void http_expired_timers_dispatch (u32 *expired_timers)
 
static uword http_server_process (vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f)
 
static int http_server_create (vlib_main_t *vm)
 
static clib_error_thttp_server_create_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_thttp_server_main_init (vlib_main_t *vm)
 

Variables

http_server_main_t http_server_main
 
static const char * http_ok
 
static const char * http_response
 
static const char * http_error_template
 
static const char * html_header_template
 
static const char * html_footer
 
static const char * html_header_static
 
static u8static_http
 
static u8static_ok
 
static session_cb_vft_t http_server_session_cb_vft
 
vlib_node_registration_t http_server_process_node
 (constructor) VLIB_REGISTER_NODE (http_server_process_node) More...
 
static vlib_cli_command_t http_server_create_command
 (constructor) VLIB_CLI_COMMAND (http_server_create_command) More...
 

Enumeration Type Documentation

◆ http_process_event_t

Enumerator
EVENT_WAKEUP 

Definition at line 22 of file http_server.c.

◆ http_session_state_t

Enumerator
HTTP_STATE_CLOSED 
HTTP_STATE_ESTABLISHED 
HTTP_STATE_OK_SENT 
HTTP_STATE_CLOSED 

Session is closed.

HTTP_STATE_ESTABLISHED 

Session is established.

HTTP_STATE_OK_SENT 

Session has sent an OK response.

HTTP_STATE_SEND_MORE_DATA 

Session has sent an HTML response.

HTTP_STATE_N_STATES 

Number of states.

Definition at line 34 of file http_server.c.

Function Documentation

◆ alloc_http_process()

static void alloc_http_process ( http_server_args args)
static

Definition at line 443 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ alloc_http_process_callback()

static void alloc_http_process_callback ( void *  cb_args)
static

Definition at line 487 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_cli_output()

static void http_cli_output ( uword  arg,
u8 buffer,
uword  buffer_bytes 
)
static

Definition at line 274 of file http_server.c.

+ Here is the call graph for this function:

◆ http_cli_process()

static uword http_cli_process ( vlib_main_t vm,
vlib_node_runtime_t rt,
vlib_frame_t f 
)
static

Definition at line 353 of file http_server.c.

+ Here is the call graph for this function:

◆ http_expired_timers_dispatch()

static void http_expired_timers_dispatch ( u32 expired_timers)
static

Definition at line 815 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_process_free()

static void http_process_free ( http_server_args args)
static

Definition at line 209 of file http_server.c.

+ Here is the call graph for this function:

◆ http_server_add_segment_callback()

static int http_server_add_segment_callback ( u32  client_index,
u64  segment_handle 
)
static

Definition at line 672 of file http_server.c.

◆ http_server_attach()

static int http_server_attach ( )
static

Definition at line 715 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_cleanup_callback()

static void http_server_cleanup_callback ( session_t s,
session_cleanup_ntf_t  ntf 
)
static

Definition at line 678 of file http_server.c.

+ Here is the call graph for this function:

◆ http_server_create()

static int http_server_create ( vlib_main_t vm)
static

Definition at line 866 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_create_command_fn()

static clib_error_t* http_server_create_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 904 of file http_server.c.

+ Here is the call graph for this function:

◆ http_server_listen()

static int http_server_listen ( )
static

Definition at line 770 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_main_init()

static clib_error_t* http_server_main_init ( vlib_main_t vm)
static

Definition at line 987 of file http_server.c.

◆ http_server_process()

static uword http_server_process ( vlib_main_t vm,
vlib_node_runtime_t rt,
vlib_frame_t f 
)
static

Definition at line 831 of file http_server.c.

◆ http_server_rx_callback()

static int http_server_rx_callback ( session_t s)
static

Definition at line 515 of file http_server.c.

+ Here is the call graph for this function:

◆ http_server_rx_callback_static()

static int http_server_rx_callback_static ( session_t s)
static

Definition at line 547 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_session_accept_callback()

static int http_server_session_accept_callback ( session_t s)
static

Definition at line 613 of file http_server.c.

+ Here is the call graph for this function:

◆ http_server_session_alloc()

static http_session_t* http_server_session_alloc ( u32  thread_index)
static

Definition at line 117 of file http_server.c.

+ Here is the caller graph for this function:

◆ http_server_session_close_cb()

static void http_server_session_close_cb ( void *  hs_handlep)
static

Definition at line 802 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_session_connected_callback()

static int http_server_session_connected_callback ( u32  app_index,
u32  api_context,
session_t s,
session_error_t  err 
)
static

Definition at line 664 of file http_server.c.

◆ http_server_session_disconnect()

static void http_server_session_disconnect ( http_session_t hs)
static

Definition at line 200 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_session_disconnect_callback()

static void http_server_session_disconnect_callback ( session_t s)
static

Definition at line 642 of file http_server.c.

+ Here is the call graph for this function:

◆ http_server_session_free()

static void http_server_session_free ( http_session_t hs)
static

Definition at line 139 of file http_server.c.

+ Here is the caller graph for this function:

◆ http_server_session_get()

static http_session_t* http_server_session_get ( u32  thread_index,
u32  hs_index 
)
static

Definition at line 130 of file http_server.c.

+ Here is the caller graph for this function:

◆ http_server_session_lookup()

static http_session_t* http_server_session_lookup ( u32  thread_index,
u32  s_index 
)
static

Definition at line 164 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_session_lookup_add()

static void http_server_session_lookup_add ( u32  thread_index,
u32  s_index,
u32  hs_index 
)
static

Definition at line 149 of file http_server.c.

+ Here is the caller graph for this function:

◆ http_server_session_lookup_del()

static void http_server_session_lookup_del ( u32  thread_index,
u32  s_index 
)
static

Definition at line 157 of file http_server.c.

+ Here is the caller graph for this function:

◆ http_server_session_reset_callback()

static void http_server_session_reset_callback ( session_t s)
static

Definition at line 653 of file http_server.c.

+ Here is the call graph for this function:

◆ http_server_session_timer_start()

static void http_server_session_timer_start ( http_session_t hs)
static

Definition at line 179 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_session_timer_stop()

static void http_server_session_timer_stop ( http_session_t hs)
static

Definition at line 190 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_sessions_reader_lock()

static void http_server_sessions_reader_lock ( void  )
static

Definition at line 93 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_sessions_reader_unlock()

static void http_server_sessions_reader_unlock ( void  )
static

Definition at line 99 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_sessions_writer_lock()

static void http_server_sessions_writer_lock ( void  )
static

Definition at line 105 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_server_sessions_writer_unlock()

static void http_server_sessions_writer_unlock ( void  )
static

Definition at line 111 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ http_transport_needs_crypto()

static int http_transport_needs_crypto ( transport_proto_t  proto)
static

Definition at line 763 of file http_server.c.

+ Here is the caller graph for this function:

◆ send_data()

void send_data ( http_session_t hs,
u8 data 
)

Definition at line 290 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ send_error()

static void send_error ( http_session_t hs,
char *  str 
)
static

Definition at line 343 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ session_rx_request()

static int session_rx_request ( http_session_t hs)
static

Definition at line 493 of file http_server.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ html_footer

const char* html_footer
static
Initial value:
=
"</pre></body></html>\r\n"

Definition at line 261 of file http_server.c.

◆ html_header_static

const char* html_header_static
static
Initial value:
=
"<html><head><title>static reply</title></head>"
"<link rel=\"icon\" href=\"data:,\">"
"<body><pre>hello</pre></body></html>\r\n"

Definition at line 264 of file http_server.c.

◆ html_header_template

const char* html_header_template
static
Initial value:
=
"<html><head><title>%v</title></head>"
"<link rel=\"icon\" href=\"data:,\">"
"<body><pre>"

Definition at line 256 of file http_server.c.

◆ http_error_template

const char* http_error_template
static
Initial value:
=
"HTTP/1.1 %s\r\n"
"Content-Type: text/html\r\n"
"Expires: Mon, 11 Jan 1970 10:10:10 GMT\r\n"
"Connection: close\r\n"
"Pragma: no-cache\r\n"
"Content-Length: 0\r\n\r\n"

Definition at line 247 of file http_server.c.

◆ http_ok

const char* http_ok
static
Initial value:
=
"HTTP/1.1 200 OK\r\n"

Definition at line 237 of file http_server.c.

◆ http_response

const char* http_response
static
Initial value:
=
"Content-Type: text/html\r\n"
"Expires: Mon, 11 Jan 1970 10:10:10 GMT\r\n"
"Connection: close \r\n"
"Pragma: no-cache\r\n"
"Content-Length: %d\r\n\r\n%v"

Definition at line 240 of file http_server.c.

◆ http_server_create_command

vlib_cli_command_t http_server_create_command
static
Initial value:
=
{
.path = "test http server",
.short_help = "test http server",
}

(constructor) VLIB_CLI_COMMAND (http_server_create_command)

Definition at line 978 of file http_server.c.

◆ http_server_main

http_server_main_t http_server_main

Definition at line 90 of file http_server.c.

◆ http_server_process_node

vlib_node_registration_t http_server_process_node
Initial value:
=
{
.function = http_server_process,
.name = "http-server-process",
.state = VLIB_NODE_STATE_DISABLED,
}

(constructor) VLIB_REGISTER_NODE (http_server_process_node)

Definition at line 856 of file http_server.c.

◆ http_server_session_cb_vft

session_cb_vft_t http_server_session_cb_vft
static
Initial value:
= {
.session_accept_callback = http_server_session_accept_callback,
.session_disconnect_callback = http_server_session_disconnect_callback,
.session_connected_callback = http_server_session_connected_callback,
.add_segment_callback = http_server_add_segment_callback,
.builtin_app_rx_callback = http_server_rx_callback,
.session_reset_callback = http_server_session_reset_callback,
.session_cleanup_callback = http_server_cleanup_callback,
}

Definition at line 704 of file http_server.c.

◆ static_http

u8* static_http
static

Definition at line 270 of file http_server.c.

◆ static_ok

u8* static_ok
static

Definition at line 271 of file http_server.c.

http_server_create_command_fn
static clib_error_t * http_server_create_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: http_server.c:904
http_server_session_disconnect_callback
static void http_server_session_disconnect_callback(session_t *s)
Definition: http_server.c:642
http_server_session_connected_callback
static int http_server_session_connected_callback(u32 app_index, u32 api_context, session_t *s, session_error_t err)
Definition: http_server.c:664
http_server_cleanup_callback
static void http_server_cleanup_callback(session_t *s, session_cleanup_ntf_t ntf)
Definition: http_server.c:678
http_server_rx_callback
static int http_server_rx_callback(session_t *s)
Definition: http_server.c:515
VLIB_NODE_TYPE_PROCESS
@ VLIB_NODE_TYPE_PROCESS
Definition: node.h:84
http_server_add_segment_callback
static int http_server_add_segment_callback(u32 client_index, u64 segment_handle)
Definition: http_server.c:672
http_server_process
static uword http_server_process(vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f)
Definition: http_server.c:831
http_server_session_accept_callback
static int http_server_session_accept_callback(session_t *s)
Definition: http_server.c:613
http_server_session_reset_callback
static void http_server_session_reset_callback(session_t *s)
Definition: http_server.c:653