sctp_messages_types.h 4.05 KB
Newer Older
nikaeinn's avatar
nikaeinn committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/*******************************************************************************
    OpenAirInterface
    Copyright(c) 1999 - 2014 Eurecom

    OpenAirInterface is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.


    OpenAirInterface is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with OpenAirInterface.The full GNU General Public License is
   included in this distribution in the file called "COPYING". If not,
   see <http://www.gnu.org/licenses/>.

  Contact Information
  OpenAirInterface Admin: openair_admin@eurecom.fr
  OpenAirInterface Tech : openair_tech@eurecom.fr
  OpenAirInterface Dev  : openair4g-devel@eurecom.fr

ghaddab's avatar
ghaddab committed
26
  Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
nikaeinn's avatar
nikaeinn committed
27 28 29

*******************************************************************************/

30 31 32
#ifndef SCTP_MESSAGES_TYPES_H_
#define SCTP_MESSAGES_TYPES_H_

33 34 35 36 37 38 39 40
#define SCTP_NEW_ASSOCIATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.sctp_new_association_req
#define SCTP_NEW_ASSOCIATION_RESP(mSGpTR)(mSGpTR)->ittiMsg.sctp_new_association_resp
#define SCTP_NEW_ASSOCIATION_IND(mSGpTR) (mSGpTR)->ittiMsg.sctp_new_association_ind
#define SCTP_DATA_IND(mSGpTR)            (mSGpTR)->ittiMsg.sctp_data_ind
#define SCTP_DATA_REQ(mSGpTR)            (mSGpTR)->ittiMsg.sctp_data_req
#define SCTP_INIT_MSG(mSGpTR)            (mSGpTR)->ittiMsg.sctp_init
#define SCTP_CLOSE_ASSOCIATION(mSGpTR)   (mSGpTR)->ittiMsg.sctp_close_association

41
enum sctp_state_e {
42 43 44 45
  SCTP_STATE_CLOSED,
  SCTP_STATE_SHUTDOWN,
  SCTP_STATE_ESTABLISHED,
  SCTP_STATE_UNREACHABLE
46 47
};

winckel's avatar
winckel committed
48
typedef struct sctp_new_association_req_s {
49 50 51 52 53 54 55 56
  /* Upper layer connexion identifier */
  uint16_t         ulp_cnx_id;

  /* The port to connect to */
  uint16_t         port;
  /* Payload Protocol Identifier to use */
  uint32_t         ppid;

57 58 59 60
  /* Number of streams used for this association */
  uint16_t in_streams;
  uint16_t out_streams;

61 62 63 64
  /* Local address to bind to */
  net_ip_address_t local_address;
  /* Remote address to connect to */
  net_ip_address_t remote_address;
65 66
} sctp_new_association_req_t;

winckel's avatar
winckel committed
67
typedef struct sctp_new_association_ind_s {
68 69
  /* Assoc id of the new association */
  int32_t  assoc_id;
70

71 72
  /* The port used by remote host */
  uint16_t port;
73

74 75 76
  /* Number of streams used for this association */
  uint16_t in_streams;
  uint16_t out_streams;
77 78
} sctp_new_association_ind_t;

winckel's avatar
winckel committed
79
typedef struct sctp_new_association_resp_s {
80 81
  /* Upper layer connexion identifier */
  uint16_t ulp_cnx_id;
82

83 84
  /* SCTP Association ID */
  int32_t  assoc_id;
85

86 87 88
  /* Input/output streams */
  uint16_t out_streams;
  uint16_t in_streams;
89

90 91
  /* State of the association at SCTP level */
  enum sctp_state_e sctp_state;
92 93
} sctp_new_association_resp_t;

winckel's avatar
winckel committed
94
typedef struct sctp_data_ind_s {
95 96
  /* SCTP Association ID */
  int32_t   assoc_id;
97

98 99 100
  /* Buffer to send over SCTP */
  uint32_t  buffer_length;
  uint8_t  *buffer;
101

102 103
  /* Streams on which data will be sent/received */
  uint16_t  stream;
104 105
} sctp_data_ind_t;

106
typedef struct sctp_init_s {
107 108 109 110 111 112 113 114 115 116
  /* Request usage of ipv4 */
  unsigned  ipv4:1;
  /* Request usage of ipv6 */
  unsigned  ipv6:1;
  uint8_t   nb_ipv4_addr;
  uint32_t  ipv4_address[10];
  uint8_t   nb_ipv6_addr;
  char     *ipv6_address[10];
  uint16_t  port;
  uint32_t  ppid;
117 118 119 120
} sctp_init_t;


typedef struct sctp_close_association_s {
121
  uint32_t  assoc_id;
122 123 124
} sctp_close_association_t;


125 126
typedef sctp_data_ind_t sctp_data_req_t;

winckel's avatar
winckel committed
127
typedef struct sctp_listener_register_upper_layer_s {
128 129 130 131 132 133
  /* Port to listen to */
  uint16_t port;
  /* Payload protocol identifier
   * Any data receveid on PPID != will be discarded
   */
  uint32_t ppid;
134 135 136
} sctp_listener_register_upper_layer_t;

#endif /* SCTP_MESSAGES_TYPES_H_ */