ProtocolConfigurationOptions.h 1.52 KB
Newer Older
Cedric Roux's avatar
 
Cedric Roux committed
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#include "OctetString.h"

#ifndef PROTOCOL_CONFIGURATION_OPTIONS_H_
#define PROTOCOL_CONFIGURATION_OPTIONS_H_

#define PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH 3
#define PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH 253

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/* 3GPP TS 24.008 Table 10.5.154
 * MS to network table
 */
typedef enum ProtocolConfigurationOptionsList_ids_tag{
    PCO_UNKNOWN                         = 0,
    PCO_P_CSCF_IPV6_ADDRESS_REQ         = 1,
    PCO_IM_CN_SUBSYSTEM_SIGNALING_FLAG  = 2,
    PCO_DNS_SERVER_IPV6_ADDRESS_REQ     = 3,
    PCO_NOT_SUPPORTED                   = 4,
    PCO_MS_SUPPORTED_OF_NETWORK_REQUESTED_BEARER_CONTROL_INDICATOR = 5,
    PCO_RESERVED                        = 6,
    /* TODO: complete me */
} ProtocolConfigurationOptionsList_ids;

/* 3GPP TS 24.008 Table 10.5.154
 * network to MS table
 * TODO
 */

Cedric Roux's avatar
 
Cedric Roux committed
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
typedef struct ProtocolConfigurationOptions_tag {
    uint8_t  configurationprotol:3;
    uint16_t protocolid;
    uint8_t  lengthofprotocolid;
    OctetString protocolidcontents;
} ProtocolConfigurationOptions;

int encode_protocol_configuration_options(ProtocolConfigurationOptions *protocolconfigurationoptions, uint8_t iei, uint8_t *buffer, uint32_t len);

int decode_protocol_configuration_options(ProtocolConfigurationOptions *protocolconfigurationoptions, uint8_t iei, uint8_t *buffer, uint32_t len);

void dump_protocol_configuration_options_xml(ProtocolConfigurationOptions *protocolconfigurationoptions, uint8_t iei);

#endif /* PROTOCOL CONFIGURATION OPTIONS_H_ */