4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
22 * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
33 #include <sys/sysmacros.h>
34 #include <net/pfkeyv2.h>
38 * This version number is intended to stop the calling process from
39 * getting confused if a structure is changed and a mismatch occurs.
40 * This should be incremented each time a structure is changed.
44 * The IKE process may be a 64-bit process, but ikeadm or any other IKE
45 * door consumer does not have to be. We need to be strict ala. PF_KEY or
46 * any on-the-wire-protocol with respect to structure fields offsets and
47 * alignment. Please make sure all structures are the same size on both
48 * 64-bit and 32-bit execution environments (or even other ones), and that
49 * apart from trivial 4-byte enums or base headers, that all structures are
50 * multiples of 8-bytes (64-bits).
53 #define DOORNM "/var/run/ike_door"
91 IKE_SVC_DUMP_CERTCACHE
,
92 IKE_SVC_FLUSH_CERTCACHE
,
95 IKE_SVC_DUMP_ENCRALGS
,
96 IKE_SVC_DUMP_AUTHALGS
,
103 typedef enum dpd_status
{
104 DPD_NOT_INITIATED
= 0,
110 #define IKE_SVC_MAX IKE_SVC_ERROR
114 * Support structures/defines
117 #define IKEDOORROUNDUP(i) P2ROUNDUP((i), sizeof (uint64_t))
120 * Debug categories. The debug level is a bitmask made up of
121 * flags indicating the desired categories; only 31 bits are
122 * available, as the highest-order bit designates an invalid
125 #define D_INVALID 0x80000000
127 #define D_CERT 0x00000001 /* certificate management */
128 #define D_KEY 0x00000002 /* key management */
129 #define D_OP 0x00000004 /* operational: config, init, mem */
130 #define D_P1 0x00000008 /* phase 1 negotiation */
131 #define D_P2 0x00000010 /* phase 2 negotiation */
132 #define D_PFKEY 0x00000020 /* pf key interface */
133 #define D_POL 0x00000040 /* policy management */
134 #define D_PROP 0x00000080 /* proposal construction */
135 #define D_DOOR 0x00000100 /* door server */
136 #define D_CONFIG 0x00000200 /* config file processing */
137 #define D_LABEL 0x00000400 /* MAC labels */
139 #define D_HIGHBIT 0x00000400
140 #define D_ALL 0x000007ff
143 * Access privilege levels: define level of access to keying information.
144 * The privileges granted at each level is a superset of the privileges
145 * granted at all lower levels.
147 * The door operations which require special privileges are:
149 * - receiving keying material for SAs and preshared key entries
150 * IKE_PRIV_KEYMAT must be set for this.
152 * - get/dump/new/delete/read/write preshared keys
153 * IKE_PRIV_KEYMAT or IKE_PRIV_MODKEYS must be set to do this.
154 * If IKE_PRIV_MODKEYS is set, the information returned for a
155 * get/dump request will not include the actual key; in order
156 * to get the key itself, IKE_PRIV_KEYMAT must be set.
158 * - modifying the privilege level: the daemon's privilege level
159 * is set when the daemon is started; the level may only be
160 * lowered via the door interface.
162 * All other operations are allowed at any privilege level.
164 #define IKE_PRIV_MINIMUM 0
165 #define IKE_PRIV_MODKEYS 1
166 #define IKE_PRIV_KEYMAT 2
167 #define IKE_PRIV_MAXIMUM 2
169 /* global ike stats formatting structure */
171 uint32_t st_init_p1_current
;
172 uint32_t st_resp_p1_current
;
173 uint32_t st_init_p1_total
;
174 uint32_t st_resp_p1_total
;
175 uint32_t st_init_p1_attempts
;
176 uint32_t st_resp_p1_attempts
;
177 uint32_t st_init_p1_noresp
; /* failed; no response from peer */
178 uint32_t st_init_p1_respfail
; /* failed, but peer responded */
179 uint32_t st_resp_p1_fail
;
180 uint32_t st_reserved
;
181 char st_pkcs11_libname
[PATH_MAX
];
184 /* structure used to pass default values used by in.iked back to ikeadm */
186 uint32_t rule_p1_lifetime_secs
;
187 uint32_t rule_p1_minlife
;
188 uint32_t rule_p1_nonce_len
;
189 uint32_t rule_p2_lifetime_secs
;
190 uint32_t rule_p2_softlife_secs
;
191 uint32_t rule_p2_idletime_secs
;
192 uint32_t sys_p2_lifetime_secs
;
193 uint32_t sys_p2_softlife_secs
;
194 uint32_t sys_p2_idletime_secs
;
195 uint32_t rule_p2_lifetime_kb
;
196 uint32_t rule_p2_softlife_kb
;
197 uint32_t sys_p2_lifetime_bytes
;
198 uint32_t sys_p2_softlife_bytes
;
199 uint32_t rule_p2_minlife_hard_secs
;
200 uint32_t rule_p2_minlife_soft_secs
;
201 uint32_t rule_p2_minlife_idle_secs
;
202 uint32_t rule_p2_minlife_hard_kb
;
203 uint32_t rule_p2_minlife_soft_kb
;
204 uint32_t rule_p2_maxlife_secs
;
205 uint32_t rule_p2_maxlife_kb
;
206 uint32_t rule_p2_nonce_len
;
207 uint32_t rule_p2_pfs
;
208 uint32_t rule_p2_mindiff_secs
;
209 uint32_t rule_p2_mindiff_kb
;
210 uint32_t conversion_factor
; /* for secs to kbytes */
211 uint32_t rule_max_certs
;
212 uint32_t rule_ike_port
;
213 uint32_t rule_natt_port
;
214 uint32_t defaults_reserved
; /* For 64-bit alignment. */
217 /* data formatting structures for P1 SA dumps */
219 struct sockaddr_storage loc_addr
;
220 struct sockaddr_storage rem_addr
;
221 #define beg_iprange loc_addr
222 #define end_iprange rem_addr
231 ike_cky_pr_t p1hdr_cookies
;
235 uint8_t p1hdr_isinit
;
236 uint32_t p1hdr_state
;
237 boolean_t p1hdr_support_dpd
;
238 dpd_status_t p1hdr_dpd_state
;
239 uint64_t p1hdr_dpd_time
;
242 /* values for p1hdr_xchg (aligned with RFC2408, section 3.1) */
243 #define IKE_XCHG_NONE 0
244 #define IKE_XCHG_BASE 1
245 #define IKE_XCHG_IDENTITY_PROTECT 2
246 #define IKE_XCHG_AUTH_ONLY 3
247 #define IKE_XCHG_AGGRESSIVE 4
248 /* following not from RFC; used only for preshared key definitions */
249 #define IKE_XCHG_IP_AND_AGGR 240
250 /* also not from RFC; used as wildcard */
251 #define IKE_XCHG_ANY 256
253 /* values for p1hdr_state */
254 #define IKE_SA_STATE_INVALID 0
255 #define IKE_SA_STATE_INIT 1
256 #define IKE_SA_STATE_SENT_SA 2
257 #define IKE_SA_STATE_SENT_KE 3
258 #define IKE_SA_STATE_SENT_LAST 4
259 #define IKE_SA_STATE_DONE 5
260 #define IKE_SA_STATE_DELETED 6
263 uint16_t p1xf_dh_group
;
264 uint16_t p1xf_encr_alg
;
265 uint16_t p1xf_encr_low_bits
;
266 uint16_t p1xf_encr_high_bits
;
267 uint16_t p1xf_auth_alg
;
268 uint16_t p1xf_auth_meth
;
271 uint32_t p1xf_max_secs
;
272 uint32_t p1xf_max_kbytes
;
273 uint32_t p1xf_max_keyuses
;
274 uint32_t p1xf_reserved
; /* Alignment to 64-bit. */
277 /* values for p1xf_dh_group (aligned with RFC2409, Appendix A) */
278 #define IKE_GRP_DESC_MODP_768 1
279 #define IKE_GRP_DESC_MODP_1024 2
280 #define IKE_GRP_DESC_EC2N_155 3
281 #define IKE_GRP_DESC_EC2N_185 4
282 /* values for p1xf_dh_group (aligned with RFC3526) */
283 #define IKE_GRP_DESC_MODP_1536 5
284 #define IKE_GRP_DESC_MODP_2048 14
285 #define IKE_GRP_DESC_MODP_3072 15
286 #define IKE_GRP_DESC_MODP_4096 16
287 #define IKE_GRP_DESC_MODP_6144 17
288 #define IKE_GRP_DESC_MODP_8192 18
289 #define IKE_GRP_DESC_ECP_256 19
290 #define IKE_GRP_DESC_ECP_384 20
291 #define IKE_GRP_DESC_ECP_521 21
292 /* values for p1xf_dh_group (aligned with RFC5114) */
293 #define IKE_GRP_DESC_MODP_1024_160 22
294 #define IKE_GRP_DESC_MODP_2048_224 23
295 #define IKE_GRP_DESC_MODP_2048_256 24
296 #define IKE_GRP_DESC_ECP_192 25
297 #define IKE_GRP_DESC_ECP_224 26
299 /* values for p1xf_auth_meth (aligned with RFC2409, Appendix A) */
300 #define IKE_AUTH_METH_PRE_SHARED_KEY 1
301 #define IKE_AUTH_METH_DSS_SIG 2
302 #define IKE_AUTH_METH_RSA_SIG 3
303 #define IKE_AUTH_METH_RSA_ENCR 4
304 #define IKE_AUTH_METH_RSA_ENCR_REVISED 5
306 /* values for p1xf_prf */
307 #define IKE_PRF_NONE 0
308 #define IKE_PRF_HMAC_MD5 1
309 #define IKE_PRF_HMAC_SHA1 2
310 #define IKE_PRF_HMAC_SHA256 5
311 #define IKE_PRF_HMAC_SHA384 6
312 #define IKE_PRF_HMAC_SHA512 7
316 * NOTE: the new and del counters count the actual number of SAs,
317 * not the number of "suites", as defined in the ike monitoring
318 * mib draft; we do this because we don't have a good way of
319 * tracking the deletion of entire suites (we're notified of
320 * deleted qm sas individually).
322 uint32_t p1stat_new_qm_sas
;
323 uint32_t p1stat_del_qm_sas
;
324 uint64_t p1stat_start
;
325 uint32_t p1stat_kbytes
;
326 uint32_t p1stat_keyuses
;
330 uint32_t p1err_decrypt
;
332 uint32_t p1err_otherrx
;
340 * followed by (len - sizeof (ike_p1_key_t)) bytes of hex data,
341 * 64-bit aligned (pad bytes are added at the end, if necessary,
342 * and NOT INCLUDED in the len value, which reflects the actual
347 /* key info types for ike_p1_key_t struct */
348 #define IKE_KEY_PRESHARED 1
349 #define IKE_KEY_SKEYID 2
350 #define IKE_KEY_SKEYID_D 3
351 #define IKE_KEY_SKEYID_A 4
352 #define IKE_KEY_SKEYID_E 5
353 #define IKE_KEY_ENCR 6
357 ike_p1_hdr_t p1sa_hdr
;
358 ike_p1_xform_t p1sa_xform
;
359 ike_addr_pr_t p1sa_ipaddrs
;
360 uint16_t p1sa_stat_off
;
361 uint16_t p1sa_stat_len
;
362 uint16_t p1sa_error_off
;
363 uint16_t p1sa_error_len
;
364 uint16_t p1sa_localid_off
;
365 uint16_t p1sa_localid_len
;
366 uint16_t p1sa_remoteid_off
;
367 uint16_t p1sa_remoteid_len
;
368 uint16_t p1sa_key_off
;
369 uint16_t p1sa_key_len
;
370 uint32_t p1sa_reserved
;
372 * variable-length structures will be included here, as
373 * indicated by offset/length fields.
374 * stats and errors will be formatted as ike_p1_stats_t and
375 * ike_p1_errors_t, respectively.
376 * key info will be formatted as a series of p1_key_t structs.
377 * local/remote ids will be formatted as sadb_ident_t structs.
382 #define MAX_LABEL_LEN 256
385 /* data formatting structure for policy (rule) dumps */
388 char rule_label
[MAX_LABEL_LEN
];
389 uint32_t rule_kmcookie
;
390 uint16_t rule_ike_mode
;
391 uint16_t rule_local_idtype
; /* SADB_IDENTTYPE_* value */
392 uint32_t rule_p1_nonce_len
;
393 uint32_t rule_p2_nonce_len
;
394 uint32_t rule_p2_pfs
;
395 uint32_t rule_p2_lifetime_secs
;
396 uint32_t rule_p2_softlife_secs
;
397 uint32_t rule_p2_idletime_secs
;
398 uint32_t rule_p2_lifetime_kb
;
399 uint32_t rule_p2_softlife_kb
;
400 uint16_t rule_xform_cnt
;
401 uint16_t rule_xform_off
;
402 uint16_t rule_locip_cnt
;
403 uint16_t rule_locip_off
;
404 uint16_t rule_remip_cnt
;
405 uint16_t rule_remip_off
;
406 uint16_t rule_locid_inclcnt
;
407 uint16_t rule_locid_exclcnt
;
408 uint16_t rule_locid_off
;
409 uint16_t rule_remid_inclcnt
;
410 uint16_t rule_remid_exclcnt
;
411 uint16_t rule_remid_off
;
413 * Followed by several lists of variable-length structures, described
414 * by counts and offsets:
415 * transforms ike_p1_xform_t structs
416 * ranges of local ip addrs ike_addr_pr_t structs
417 * ranges of remote ip addrs ike_addr_pr_t structs
418 * local identification strings null-terminated ascii strings
419 * remote identification strings null-terminated ascii strings
423 /* data formatting structure for DH group dumps */
425 uint16_t group_number
;
427 char group_label
[MAX_LABEL_LEN
];
430 /* data formatting structure for encryption algorithm dumps */
433 char encr_name
[MAX_LABEL_LEN
];
438 /* data formatting structure for authentication algorithm dumps */
441 char auth_name
[MAX_LABEL_LEN
];
445 * data formatting structure for preshared keys
446 * ps_ike_mode field uses the IKE_XCHG_* defs
449 ike_addr_pr_t ps_ipaddrs
;
450 uint16_t ps_ike_mode
;
451 uint16_t ps_localid_off
;
452 uint16_t ps_localid_len
;
453 uint16_t ps_remoteid_off
;
454 uint16_t ps_remoteid_len
;
457 uint16_t ps_key_bits
;
459 int ps_remoteid_plen
;
461 * followed by variable-length structures, as indicated by
462 * offset/length fields.
463 * key info will be formatted as an array of bytes.
464 * local/remote ids will be formatted as sadb_ident_t structs.
469 #define CERT_OFF_WIRE -1
470 #define CERT_NO_PRIVKEY 0
471 #define CERT_PRIVKEY_LOCKED 1
472 #define CERT_PRIVKEY_AVAIL 2
475 * data formatting structure for cached certs
481 uint32_t certcache_padding
; /* For 64-bit alignment. */
482 char subject
[DN_MAX
];
486 /* identification types */
487 #define IKE_ID_IDENT_PAIR 1
488 #define IKE_ID_ADDR_PAIR 2
489 #define IKE_ID_CKY_PAIR 3
490 #define IKE_ID_LABEL 4
493 /* locations for read/write requests */
494 #define IKE_RW_LOC_DEFAULT 1
495 #define IKE_RW_LOC_USER_SPEC 2
498 /* door interface error codes */
499 #define IKE_ERR_NO_OBJ 1 /* nothing found to match the request */
500 #define IKE_ERR_NO_DESC 2 /* fd was required with this request */
501 #define IKE_ERR_ID_INVALID 3 /* invalid id info was provided */
502 #define IKE_ERR_LOC_INVALID 4 /* invalid location info was provided */
503 #define IKE_ERR_CMD_INVALID 5 /* invalid command was provided */
504 #define IKE_ERR_DATA_INVALID 6 /* invalid data was provided */
505 #define IKE_ERR_CMD_NOTSUP 7 /* unsupported command */
506 #define IKE_ERR_REQ_INVALID 8 /* badly formatted request */
507 #define IKE_ERR_NO_PRIV 9 /* privilege level not high enough */
508 #define IKE_ERR_SYS_ERR 10 /* syserr occurred while processing */
509 #define IKE_ERR_DUP_IGNORED 11 /* attempt to add a duplicate entry */
510 #define IKE_ERR_NO_TOKEN 12 /* cannot login into pkcs#11 token */
511 #define IKE_ERR_NO_AUTH 13 /* not authorized */
512 #define IKE_ERR_IN_PROGRESS 14 /* operation already in progress */
513 #define IKE_ERR_NO_MEM 15 /* insufficient memory */
518 * Used to request the current debug level.
520 * Upon request, dbg_level is 0 (don't care).
522 * Upon return, dbg_level contains the current value.
526 * Used to request modification of the debug level.
528 * Upon request, dbg_level contains desired level. If debug output is
529 * to be directed to a different file, the fd should be passed in the
530 * door_desc_t field of the door_arg_t param. NOTE: if the daemon is
531 * currently running in the background with no debug set, an output
532 * file MUST be given.
534 * Upon return, dbg_level contains the old debug level, and acknowledges
535 * successful completion of the request. If an error is encountered,
536 * ike_err_t is returned instead, with appropriate error value and cmd
546 * Used to request the current privilege level.
548 * Upon request, priv_level is 0 (don't care).
550 * Upon return, priv_level contains the current value.
554 * Used to request modification of the privilege level.
556 * Upon request, priv_level contains the desired level. The level may
557 * only be lowered via the door interface; it cannot be raised. Thus,
558 * if in.iked is started at the lowest level, it cannot be changed.
560 * Upon return, priv_level contains the old privilege level, and
561 * acknowledges successful completion of the request. If an error is
562 * encountered, ike_err_t is returned instead, with appropriate error
563 * value and cmd IKE_SVC_ERROR.
573 * Used to request current statistics on Phase 1 SA creation and
574 * failures. The statistics represent all activity in in.iked.
576 * Upon request, cmd is set, and stat_len does not matter.
578 * Upon successful return, stat_len contains the total size of the
579 * returned buffer, which contains first the ike_statreq_t struct,
580 * followed by the stat data in the ike_stats_t structure. In case
581 * of an error in processing the request, ike_err_t is returned with
582 * IKE_SVC_ERROR command and appropriate error code.
591 * Used to request default values from in.iked.
593 * Upon request, cmd is set, and stat_len does not matter.
595 * Upon successful return, stat_len contains the total size of the
596 * returned buffer, this contains a pair of ike_defaults_t's.
602 uint32_t defreq_reserved
; /* For 64-bit alignment. */
606 * IKE_SVC_DUMP_{P1S|RULES|PS|CERTCACHE}
607 * Used to request a table dump, and to return info for a single table
608 * item. The expectation is that all of the table data will be passed
609 * through the door, one entry at a time; an individual request must be
610 * sent for each entry, however (the door server can't send unrequested
613 * Upon request: cmd is set, and dump_next contains the item number
614 * requested (0 for first request). dump_len is 0; no data follows.
616 * Upon return: cmd is set, and dump_next contains the item number of
617 * the *next* item in the table (to be used in the subsequent request).
618 * dump_next = 0 indicates that this is the last item in the table.
619 * dump_len is the total length (data + struct) returned. Data is
620 * formatted as indicated by the cmd type:
621 * IKE_SVC_DUMP_P1S: ike_p1_sa_t
622 * IKE_SVC_DUMP_RULES: ike_rule_t
623 * IKE_SVC_DUMP_PS: ike_ps_t
624 * IKE_SVC_DUMP_CERTCACHE: ike_certcache_t
632 uint32_t dump_ureserved
;
634 uint64_t dump_alignment
;
636 #define dump_next dump_u.dump_actual.dump_unext
637 #define dump_reserved dump_u.dump_actual.dump_ureserved
638 /* dump_len - sizeof (ike_dump_t) bytes of data included here */
643 * IKE_SVC_GET_{P1|RULE|PS}
644 * Used to request and return individual table items.
646 * Upon request: get_len is the total msg length (struct + id data);
647 * get_idtype indicates the type of identification being used.
648 * IKE_SVC_GET_P1: ike_addr_pr_t or ike_cky_pr_t
649 * IKE_SVC_GET_RULE: char string (label)
650 * IKE_SVC_GET_PS: ike_addr_pr_t or pair of sadb_ident_t
652 * Upon return: get_len is the total size (struct + data), get_idtype
653 * is unused, and the data that follows is formatted according to cmd:
654 * IKE_SVC_GET_P1: ike_p1_sa_t
655 * IKE_SVC_GET_RULE: ike_rule_t
656 * IKE_SVC_GET_PS: ike_ps_t
663 uint32_t getu_idtype
;
664 uint32_t getu_reserved
;
666 uint64_t get_alignment
;
668 #define get_idtype get_u.get_actual.getu_idtype
669 #define get_reserved get_u.get_actual.getu_reserved
670 /* get_len - sizeof (ike_get_t) bytes of data included here */
675 * IKE_SVC_NEW_{RULE|PS}
676 * Used to request and acknowledge insertion of a table item.
678 * Upon request: new_len is the total (data + struct) size passed, or 0.
679 * new_len = 0 => a door_desc_t is also included with a file descriptor
680 * for a file containing the data to be added. The file should include
681 * a single item: a rule, or a pre-shared key. For new_len != 0, the
682 * data is formatted according to the cmd type:
683 * IKE_SVC_NEW_RULE: ike_rule_t
684 * IKE_SVC_NEW_PS: ike_ps_t
686 * Upon return: new_len is 0; simply acknowledges successful insertion
687 * of the requested item. If insertion is not successful, ike_err_t is
688 * returned instead with appropriate error value.
693 /* new_len - sizeof (ike_new_t) bytes included here */
694 uint64_t new_align
; /* Padding for 64-bit alignment. */
699 * IKE_SVC_DEL_{P1|RULE|PS}
700 * Used to request and acknowledge the deletion of an individual table
703 * Upon request: del_len is the total msg length (struct + id data);
704 * del_idtype indicates the type of identification being used.
705 * IKE_SVC_DEL_P1: ike_addr_pr_t or ike_cky_pr_t
706 * IKE_SVC_DEL_RULE: char string (label)
707 * IKE_SVC_DEL_PS: ike_addr_pr_t or pair of sadb_ident_t
709 * Upon return: acknowledges deletion of the requested item; del_len and
710 * del_idtype are unspecified. If deletion is not successful, ike_err_t
711 * is returned instead with appropriate error value.
717 uint32_t del_reserved
;
718 /* del_len - sizeof (ike_del_t) bytes of data included here. */
723 * IKE_SVC_READ_{RULES|PS}
724 * Used to ask daemon to re-read particular configuration info.
726 * Upon request: rw_loc indicates where the info should be read from:
727 * either from a user-supplied file descriptor(s), or from the default
728 * location(s). If rw_loc indicates user-supplied location, the file
729 * descriptor(s) should be passed in the door_desc_t struct. For the
730 * IKE_SVC_READ_RULES cmd, two file descriptors should be specified:
731 * first, one for the config file which contains the data to be read,
732 * and second, one for the cookie file which will be written to as
733 * in.iked process the config file.
735 * Upon return: rw_loc is unspecified; the message simply acknowledges
736 * successful completion of the request. If an error occurred,
737 * ike_err_t is returned instead with appropriate error value.
740 * IKE_SVC_WRITE_{RULES|PS}
741 * Used to ask daemon to write its current config info to files.
743 * Request and return are handled the same as for the IKE_SVC_READ_*
744 * cmds; however, the rw_loc MUST be a user-supplied location. Also,
745 * for the IKE_SVC_WRITE_RULES cmd, the cookie file fd is not required;
746 * only a single fd, for the file to which the config info should be
747 * written, should be passed in.
757 * IKE_SVC_FLUSH_CERTCACHE
759 * Used to request and acknowledge tear-down of all P1 SAs
760 * or to flush the certificate cache.
767 #ifndef PKCS11_TOKSIZE
768 #define PKCS11_TOKSIZE 32
770 #define MAX_PIN_LEN 256
775 * Used to supply a pin for a PKCS#11 tokenj object.
780 uint32_t pin_reserved
; /* For 64-bit alignment. */
781 char pkcs11_token
[PKCS11_TOKSIZE
];
782 uchar_t token_pin
[MAX_PIN_LEN
];
787 * Used on return if server encountered an error while processing
788 * the request. An appropriate error code is included (as defined
789 * in this header file); in the case of IKE_ERR_SYS_ERR, a value
790 * from the UNIX errno space is included in the ike_err_unix field.
795 uint32_t ike_err_unix
;
796 uint32_t ike_err_reserved
;
800 * Generic type for use when the request/reply type is unknown
808 * Union containing all possible request/return structures.
814 ike_statreq_t svc_stats
;
820 ike_flush_t svc_flush
;
823 ike_defreq_t svc_defaults
;
830 #endif /* _IKEDOOR_H */