102 lines
3.8 KiB
C
102 lines
3.8 KiB
C
/*
|
|
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
|
* contributor license agreements. See the NOTICE file distributed with
|
|
* this work for additional information regarding copyright ownership.
|
|
* The OpenAirInterface Software Alliance licenses this file to You under
|
|
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
|
* except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.openairinterface.org/?page_id=698
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*-------------------------------------------------------------------------------
|
|
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
|
* contact@openairinterface.org
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
|
|
#include "sctp_eNB_defs.h"
|
|
|
|
#ifndef SCTP_PRIMITIVES_CLIENT_H_
|
|
#define SCTP_PRIMITIVES_CLIENT_H_
|
|
|
|
/** @defgroup _sctp_impl_ SCTP Layer Reference Implementation
|
|
* @ingroup _ref_implementation_
|
|
* @{
|
|
*/
|
|
|
|
/** \brief SCTP recv callback prototype. Will be called every time a message is
|
|
* received on socket.
|
|
* \param assocId SCTP association ID
|
|
* \param stream SCTP stream on which data had been received
|
|
* \param buffer Pointer to data (should be freed by user)
|
|
* \param length Length of message received
|
|
* @return Execution result
|
|
*/
|
|
typedef int (*sctp_recv_callback)(uint32_t assocId,
|
|
uint32_t stream,
|
|
uint8_t *buffer,
|
|
uint32_t length);
|
|
|
|
/** \brief SCTP connected callback prototype. Will be called once the
|
|
* association is ready.
|
|
* \param args argument provided by upper layer
|
|
* \param assocId SCTP association ID
|
|
* \param instreams Number of input streams negotiated with remote peer
|
|
* \param outstreams Number of output streams negotiated with remote peer
|
|
* @return Execution result
|
|
*/
|
|
typedef int (*sctp_connected_callback)(void *args,
|
|
uint32_t assocId,
|
|
uint32_t instreams,
|
|
uint32_t outstreams);
|
|
|
|
/** \brief Perform association to a remote peer
|
|
* \param ip_addr Peer IPv4 address
|
|
* \param port Remote port to connect to
|
|
* \param args Upper layer args that will be provided to connected callback
|
|
* \param connected_callback Connected callback
|
|
* \param recv_callback Data received callback
|
|
* @return < 0 in case of failure
|
|
*/
|
|
int sctp_connect_to_remote_host(char *local_ip_addr[],
|
|
int nb_local_addr,
|
|
char *remote_ip_addr,
|
|
uint16_t port,
|
|
int socket_type,
|
|
sctp_data_t *sctp_data_p);
|
|
|
|
/** \brief Send message over SCTP
|
|
* \param sctp_data_p Pointer to the SCTP desc
|
|
* \param ppid Payload Protocol Identifier
|
|
* \param stream SCTP stream on which data will be sent
|
|
* \param buffer Pointer to buffer
|
|
* \param length Buffer length
|
|
* @return < 0 in case of failure
|
|
*/
|
|
int sctp_send_msg(sctp_data_t *sctp_data_p, uint16_t ppid, uint16_t stream,
|
|
const uint8_t *buffer, const uint32_t length);
|
|
|
|
/** \brief Flush the FIFO of messages from the socket
|
|
* \param sctp_data_p
|
|
* @return < 0 in case of failure
|
|
*/
|
|
int sctp_run(sctp_data_t *sctp_data_p);
|
|
|
|
/** \brief Properly disconnect the peer
|
|
* \param assoc_id The SCTP association ID
|
|
* @return < 0 in case of failure
|
|
*/
|
|
void sctp_disconnect(uint32_t assoc_id);
|
|
|
|
void sctp_terminate(void);
|
|
|
|
/* @} */
|
|
#endif /* SCTP_PRIMITIVES_CLIENT_H_ */
|