home | help
str_to_gensio(3)	    Library Functions Manual		str_to_gensio(3)

NAME
     str_to_gensio,  str_to_gensio_child,  gensio_acc_str_to_gensio  -	Create a
     gensio from a string

SYNOPSIS
     #include <gensio/gensio.h>

     int str_to_gensio(const char *str,
			 struct gensio_os_funcs *o,
			 gensio_event cb, void *user_data,
			 struct gensio **io);

     int str_to_gensio_child(struct gensio *child, const char *str,
			 struct gensio_os_funcs *o,
			 gensio_event cb, void *user_data,
			 struct gensio **io);

     int gensio_acc_str_to_gensio(struct gensio_accepter *accepter,
			 const char *str, struct gensio_os_funcs *o,
			 gensio_event cb, void *user_data,
			 struct gensio **io);

     int gensio_terminal_alloc(const char *gensiotype,
			 const void *gdata,
			 const char * const args[],
			 struct gensio_os_funcs *o,
			 gensio_event cb, void *user_data,
			 struct gensio **new_gensio);

     int gensio_filter_alloc(const char *gensiotype,
			 struct gensio *child,
			 const char * const args[],
			 struct gensio_os_funcs *o,
			 gensio_event cb, void *user_data,
			 struct gensio **new_gensio);

DESCRIPTION
     str_to_gensio allocates a new gensio stack based upon the given string str.

     str_to_gensio_child allocates a partial gensio stack and stacks it  on  top
     of the given child.  Note that if the child is already open, you should use
     gesnio_open_nochild()  to	open just this gensio.	This can only be used to
     allocate filter gensios.

     gensio_acc_str_to_gensio allocates a gensio based upon the given  accepter.
     The  availability	and use of this varies from gensio to gensio, but it can
     be used on UDP to create a gensio that uses the UDP ports that the accepter
     owns.  This will come from the first address/port that the accepter  is  on
     for  TCP  and UDP.  It will bind to all the address/ports for SCTP.  To use
     this, you must specify a string that exactly matches the layers of the  ac-
     cepter.	 So,	for    instance,    if	  the	 accepter    is    "tel-
     net,ssl(CA=x1,key=x2,cert=x3),sctp,3095", then the string must  be  in  the
     form  "telnet,ssl(CA=x2),sctp,otherserver,3820"  The layers are exactly the
     same, but you can vary the options to the layers.

     To directly allocation gensios, you can use gensio_terminal_alloc and  gen-
     sio_filter_alloc.	 A  terminal  gensio  is one at the bottom of the stack.
     The gdata parameter depends on the particular gensio.   For  instance,  for
     serialdev	it is a string specifying the device and serial parameters.  For
     stdio it is an argv array.  See gensio.5 under "Direct Allocation" for  the
     particular gensio for what gdata is.

     A	filter	gensio is one that has a child.  You can use these two functions
     to allocate a gensio stack directly, not using a string format.

     The cb and user_data parameters set a function that  will	be  called  when
     events  come in on the gensio.  user_data is unused by the gensio stack it-
     self, it is there for the user and may be anything the user wishes.  cb may
     be NULL before the gensio is opened, but must be set before it  is  opened.
     In  particular,  the  cb  does  not need to be set if other gensios will be
     stacked on top of it in the future, as the gensios stacked on top will  set
     the cb and user_data values.

     The new gensio is returned in io.	It will be in the closed state.

RETURN VALUES
     Zero is returned on success, or a gensio error on failure.

SEE ALSO
     gensio_set_callback(3), gensio_err(3), gensio(5)

				   22 Feb 2019			str_to_gensio(3)

home | help