+ * This function creates UDP stream. The UDP stream is bound to the
+ * `local_ip_addr' if it is specified. If `local_port' is non-zero the
+ * stream is bound to that port. If the `remote_ip_addr' and `remote_port'
+ * is also provided, packets may be sent to that address using
+ * silc_stream_write function and packets may be received using
+ * silc_stream_read function.
+ *
+ * If the remote address is not provided the stream is in connectionless
+ * state. This means that packets can be received only by using
+ * silc_net_udp_receive and sent only by using the function
+ * silc_net_udp_send.
+ *
+ * To receive packets the silc_stream_set_notifier must be called for the
+ * returned SilcStream. The packets are always received in the notifier
+ * callback when the SILC_STREAM_CAN_READ is returned to the callback
+ * To read the packet use silc_stream_read if the remote address was
+ * provided, and silc_net_udp_receive if it was not.
+ *
+ * Supports IPv6 if the platform supports it.
+ *
+ * EXAMPLE
+ *
+ * SilcStream udpstream;
+ *
+ * // Create UDP stream and prepare to receive packets
+ * udpstream = silc_net_udp_connect("10.2.1.7", 5000,
+ * "10.2.1.100, 5000, schedule);
+ * silc_stream_set_notifier(udpstream, schedule, receive_callback, context);
+ *
+ * // Send packet to remote host
+ * silc_stream_write(udpstream, data, data_len);
+ *
+ * Create UDP listener:
+ *
+ * udpstream = silc_net_udp_connect("0.0.0.0", 500, NULL, 0, schedule);
+ * silc_stream_set_notifier(udpstream, schedule, receive_callback, context);