Copyright © 2001 - 2007 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index

SILC Toolkit Reference Manual SILC Crypto Library Introduction to SILC RNG SILC RNG Interface SILC Cipher API SILC PKCS API SILC Public Key API SILC PKCS #1 API SILC Hash Interface SILC HMAC Interface SILC Core Library SILC Authentication Interface SILC Message Interface SILC Channel Interface SILC Command Interface SILC Notify Interface SILC Status Types SILC Modes SILC ID Interface SILC Argument Interface SILC Attributes Interface Packet Engine Interface SILC Public Key Payload Interface SILC Key Exchange Library SILC SKE Interface SILC Connection Authentication Interface SILC VCard Library SILC VCard Interface SILC Math Library SILC MP Interface SILC Math Interface SILC Client Library Using SILC Client Library Tutorial Arguments for command_reply Client Operation SilcStatus Error Arguments in command_reply Client Operation Arguments for notify Client Operation Unicode and UTF-8 Strings in Client Library Client Library Interface Reference Client Entry Interface Reference SILC ASN.1 Library SILC ASN.1 Interface SILC BER interface SILC HTTP Library SILC HTTP Server Interface SILC HTTP PHP Translator SILC Utility Library Basic Types and Definitions Data Buffer Interface Data Buffer Format Interface Hash Table Interface Memory Allocation Interface Data Stack (memory pool) Interface Finite State Machine Interface Thread Interface Mutual Exclusion Lock Interface Condition Variable Interface Atomic Operations Interface Network (TCP and UDP) Interface Scheduler Interface Asynchronous Operation Interface Abstract Stream Interface Socket Stream Interface File Descriptor Stream Interface File Utility Functions String Utility Interface Snprintf Interface UTF-8 String Interface Stringprep Interface Utility Functions List Interface Dynamic List Interface MIME Interface Time Utility Functions Logging Interface Config File Interface SILC Key Repository Library SILC SKR Interface SILC Application Utility Library SILC Application Utilities SILC ID Cache Interface SILC SFTP Library SILC SFTP Interface SFTP Filesystems Interface Resource Links SILC Project Website SILC Protocol Documentation SILC White Paper SILC FAQs
Function silc_packet_stream_add_remote SYNOPSIS
        SilcPacketStream silc_packet_stream_add_remote(SilcPacketStream stream,
                                                       const char *remote_ip,
                                                       SilcUInt16 remote_port,
                                                       SilcPacket packet);
DESCRIPTION
        This function is used to add remote receivers in packet stream `stream'
        that has UDP/IP socket stream as the underlaying stream.  This function
        cannot be used with other type of streams.  This returns new packet
        stream context that can be used to send to and receive packets from
        the specified remote IP and remote port, or NULL on error.  The `stream'
        is the actual stream that is used to send and receive the data.

        When the parent `stream' receives packets from remote IP address
        and port that does not have its own remote packet stream, it returns
        the packet to the packet callback set for `stream'.  The sender's
        IP address and port can then be retrieved by using the
        silc_packet_get_sender function and to create new packet stream by
        calling this function.  After that, all packets from that IP address
        and port will be received by the new packet stream.

        If the `packet' is non-NULL it will be injected into the new packet
        stream as soon as the scheduler associated with `stream' schedules
        new tasks.  It can be used to inject an incoming packet to the stream.

        This interface is for connectionless UDP streams.  If it is possible
        to create connected stream it should be done for performance reasons.
EXAMPLE
        // Create parent packet stream, it can receive packets from anywhere
        listener = silc_net_udp_connect("0.0.0.0", 500, NULL, 0, schedule);
        parent = silc_packet_stream_create(engine, schedule, listener);

        ...
        // Received a packet to the parent stream, get the sender information.
        silc_packet_get_sender(packet, &ip, &port);

        // Create new packet stream for this remote location.
        remote = silc_packet_stream_add_remote(parent, ip, port, packet);
SILC Packet Engine Interface SilcPacketType SilcPacketFlags SilcPacketEngine SilcPacketStream SilcPacket SilcPacketError SilcPacketReceiveCb SilcPacketEosCb SilcPacketErrorCb SilcPacketCallbacks silc_packet_engine_start silc_packet_engine_stop silc_packet_error_string silc_packet_engine_get_streams silc_packet_engine_free_streams_list silc_packet_stream_create silc_packet_stream_add_remote silc_packet_stream_inject silc_packet_stream_destroy silc_packet_stream_is_valid silc_packet_stream_set_router silc_packet_stream_set_iv_included silc_packet_stream_set_stream silc_packet_stream_get_stream silc_packet_stream_link silc_packet_stream_unlink SilcPacketWrapCoder silc_packet_stream_wrap silc_packet_stream_is_udp silc_packet_get_sender silc_packet_stream_ref silc_packet_stream_unref silc_packet_get_engine silc_packet_set_context silc_packet_get_context silc_packet_set_keys silc_packet_get_keys silc_packet_set_ids silc_packet_get_ids silc_packet_set_sid silc_packet_send silc_packet_send_ext silc_packet_send_va silc_packet_send_va_ext silc_packet_wait_init silc_packet_wait_uninit silc_packet_wait silc_packet_free

Copyright © 2001 - 2007 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index