libIEC61850  1.0.1
Open-source IEC 61850 MMS/GOOSE/SV server and client library
iso_connection_parameters.h
Go to the documentation of this file.
1 /*
2  * iso_connection_parameters.h
3  *
4  * Copyright 2013, 2014 Michael Zillgith
5  *
6  * This file is part of libIEC61850.
7  *
8  * libIEC61850 is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * libIEC61850 is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
20  *
21  * See COPYING file for the complete license text.
22  */
23 
24 #ifndef ISO_CONNECTION_PARAMETERS_H_
25 #define ISO_CONNECTION_PARAMETERS_H_
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
37 typedef enum
38 {
42 
43 
44 /* --> for compatibility with older versions (libiec61850 < 0.7.7) */
45 #ifndef AUTH_NONE
46 #define AUTH_NONE ACSE_AUTH_NONE
47 #endif
48 
49 #ifndef AUTH_PASSWORD
50 #define AUTH_PASSWORD ACSE_AUTH_PASSWORD
51 #endif
52 /* <-- for compatibility with older versions (libiec61850 < 0.7.7) */
53 
54 typedef struct sAcseAuthenticationParameter* AcseAuthenticationParameter;
55 
57 {
59  union
60  {
61  struct
62  {
63  uint8_t* octetString;
65  } password;
66  } value;
67 };
68 
69 AcseAuthenticationParameter
71 
72 void
73 AcseAuthenticationParameter_destroy(AcseAuthenticationParameter self);
74 
75 void
77 
78 void
79 AcseAuthenticationParameter_setPassword(AcseAuthenticationParameter self, char* password);
80 
81 
91 typedef bool
92 (*AcseAuthenticator)(void* parameter, AcseAuthenticationParameter authParameter, void** securityToken);
93 
99 typedef struct {
100  uint8_t size;
101  uint8_t value[4];
102 } TSelector;
103 
104 typedef struct {
105  uint8_t size;
106  uint8_t value[16];
107 } SSelector;
108 
110 {
111  AcseAuthenticationParameter acseAuthParameter;
112 
113  const char* hostname;
114  int tcpPort;
115 
116  uint8_t remoteApTitle[10];
119  uint32_t remotePSelector;
122 
123  uint8_t localApTitle[10];
126  uint32_t localPSelector;
129 
130 };
131 
132 typedef struct sIsoConnectionParameters* IsoConnectionParameters;
133 
142 IsoConnectionParameters
144 
153 void
154 IsoConnectionParameters_destroy(IsoConnectionParameters self);
155 
164 void
165 IsoConnectionParameters_setAcseAuthenticationParameter(IsoConnectionParameters self,
166  AcseAuthenticationParameter acseAuthParameter);
167 
178 void
179 IsoConnectionParameters_setTcpParameters(IsoConnectionParameters self, const char* hostname, int tcpPort);
180 
193 void
194 IsoConnectionParameters_setRemoteApTitle(IsoConnectionParameters self, const char* apTitle, int aeQualifier);
195 
208 void
209 IsoConnectionParameters_setRemoteAddresses(IsoConnectionParameters self, uint32_t pSelector, SSelector sSelector, TSelector tSelector);
210 
223 void
224 IsoConnectionParameters_setLocalApTitle(IsoConnectionParameters self, char* apTitle, int aeQualifier);
225 
238 void
239 IsoConnectionParameters_setLocalAddresses(IsoConnectionParameters self, uint32_t pSelector, SSelector sSelector, TSelector tSelector);
240 
243 #ifdef __cplusplus
244 }
245 #endif
246 
247 #endif /* ISO_CONNECTION_PARAMETERS_H_ */
TSelector localTSelector
Definition: iso_connection_parameters.h:128
AcseAuthenticationParameter acseAuthParameter
Definition: iso_connection_parameters.h:111
uint32_t localPSelector
Definition: iso_connection_parameters.h:126
uint8_t * octetString
Definition: iso_connection_parameters.h:63
uint8_t size
Definition: iso_connection_parameters.h:100
void IsoConnectionParameters_setLocalAddresses(IsoConnectionParameters self, uint32_t pSelector, SSelector sSelector, TSelector tSelector)
set local addresses for the lower layers
int remoteApTitleLen
Definition: iso_connection_parameters.h:117
Definition: iso_connection_parameters.h:40
AcseAuthenticationParameter AcseAuthenticationParameter_create(void)
const char * hostname
Definition: iso_connection_parameters.h:113
Definition: iso_connection_parameters.h:109
int passwordLength
Definition: iso_connection_parameters.h:64
struct sAcseAuthenticationParameter::@0::@1 password
TSelector remoteTSelector
Definition: iso_connection_parameters.h:121
AcseAuthenticationMechanism mechanism
Definition: iso_connection_parameters.h:58
void AcseAuthenticationParameter_setAuthMechanism(AcseAuthenticationParameter self, AcseAuthenticationMechanism mechanism)
void IsoConnectionParameters_setTcpParameters(IsoConnectionParameters self, const char *hostname, int tcpPort)
Set TCP parameters (FOR LIBRARY INTERNAL USE)
void IsoConnectionParameters_setLocalApTitle(IsoConnectionParameters self, char *apTitle, int aeQualifier)
set the local AP-Title and AE-Qualifier
Definition: iso_connection_parameters.h:56
AcseAuthenticationMechanism
Definition: iso_connection_parameters.h:37
uint8_t size
Definition: iso_connection_parameters.h:105
void AcseAuthenticationParameter_setPassword(AcseAuthenticationParameter self, char *password)
bool(* AcseAuthenticator)(void *parameter, AcseAuthenticationParameter authParameter, void **securityToken)
Callback function to authenticate a client.
Definition: iso_connection_parameters.h:92
void IsoConnectionParameters_setRemoteAddresses(IsoConnectionParameters self, uint32_t pSelector, SSelector sSelector, TSelector tSelector)
set remote addresses for the lower layers
int localApTitleLen
Definition: iso_connection_parameters.h:124
SSelector remoteSSelector
Definition: iso_connection_parameters.h:120
void IsoConnectionParameters_destroy(IsoConnectionParameters self)
Destroy an IsoConnectionParameters instance (FOR LIBRARY INTERNAL USE)
void IsoConnectionParameters_setAcseAuthenticationParameter(IsoConnectionParameters self, AcseAuthenticationParameter acseAuthParameter)
set the authentication parameter
union sAcseAuthenticationParameter::@0 value
void AcseAuthenticationParameter_destroy(AcseAuthenticationParameter self)
COTP T selector.
Definition: iso_connection_parameters.h:99
Definition: iso_connection_parameters.h:104
IsoConnectionParameters IsoConnectionParameters_create(void)
create a new IsoConnectionParameters instance (FOR LIBRARY INTERNAL USE)
int tcpPort
Definition: iso_connection_parameters.h:114
Definition: iso_connection_parameters.h:39
int localAEQualifier
Definition: iso_connection_parameters.h:125
SSelector localSSelector
Definition: iso_connection_parameters.h:127
uint32_t remotePSelector
Definition: iso_connection_parameters.h:119
int remoteAEQualifier
Definition: iso_connection_parameters.h:118
void IsoConnectionParameters_setRemoteApTitle(IsoConnectionParameters self, const char *apTitle, int aeQualifier)
set the remote AP-Title and AE-Qualifier