blob: f56ed871bb9931026aba9137bb9957eb346ef812 [file] [log] [blame]
Jing Huang7725ccf2009-09-23 17:46:15 -07001/*
2 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
3 * All rights reserved
4 * www.brocade.com
5 *
6 * Linux driver for Brocade Fibre Channel Host Bus Adapter.
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License (GPL) Version 2 as
10 * published by the Free Software Foundation
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 */
17#ifndef __BFA_DEFS_AUTH_H__
18#define __BFA_DEFS_AUTH_H__
19
20#include <defs/bfa_defs_types.h>
21
22#define PUBLIC_KEY 15409
23#define PRIVATE_KEY 19009
24#define KEY_LEN 32399
25#define BFA_AUTH_SECRET_STRING_LEN 256
Krishna Gudipatif926a052010-03-05 19:36:00 -080026#define BFA_AUTH_FAIL_NO_PASSWORD 0xFE
Jing Huang7725ccf2009-09-23 17:46:15 -070027#define BFA_AUTH_FAIL_TIMEOUT 0xFF
28
29/**
30 * Authentication status
31 */
32enum bfa_auth_status {
33 BFA_AUTH_STATUS_NONE = 0, /* no authentication */
34 BFA_AUTH_UNINIT = 1, /* state - uninit */
35 BFA_AUTH_NEG_SEND = 2, /* state - negotiate send */
36 BFA_AUTH_CHAL_WAIT = 3, /* state - challenge wait */
37 BFA_AUTH_NEG_RETRY = 4, /* state - negotiate retry */
38 BFA_AUTH_REPLY_SEND = 5, /* state - reply send */
39 BFA_AUTH_STATUS_WAIT = 6, /* state - status wait */
40 BFA_AUTH_SUCCESS = 7, /* state - success */
41 BFA_AUTH_FAILED = 8, /* state - failed */
42 BFA_AUTH_STATUS_UNKNOWN = 9, /* authentication status unknown */
43};
44
Krishna Gudipatif926a052010-03-05 19:36:00 -080045enum bfa_auth_rej_code {
46 BFA_AUTH_RJT_CODE_AUTH_FAILURE = 1, /* auth failure */
47 BFA_AUTH_RJT_CODE_LOGICAL_ERR = 2, /* logical error */
48};
49
50/**
51 * Authentication reject codes
52 */
53enum bfa_auth_rej_code_exp {
54 BFA_AUTH_MECH_NOT_USABLE = 1, /* auth. mechanism not usable */
55 BFA_AUTH_DH_GROUP_NOT_USABLE = 2, /* DH Group not usable */
56 BFA_AUTH_HASH_FUNC_NOT_USABLE = 3, /* hash Function not usable */
57 BFA_AUTH_AUTH_XACT_STARTED = 4, /* auth xact started */
58 BFA_AUTH_AUTH_FAILED = 5, /* auth failed */
59 BFA_AUTH_INCORRECT_PLD = 6, /* incorrect payload */
60 BFA_AUTH_INCORRECT_PROTO_MSG = 7, /* incorrect proto msg */
61 BFA_AUTH_RESTART_AUTH_PROTO = 8, /* restart auth protocol */
62 BFA_AUTH_AUTH_CONCAT_NOT_SUPP = 9, /* auth concat not supported */
63 BFA_AUTH_PROTO_VER_NOT_SUPP = 10,/* proto version not supported */
64};
65
Jing Huang7725ccf2009-09-23 17:46:15 -070066struct auth_proto_stats_s {
67 u32 auth_rjts;
68 u32 auth_negs;
69 u32 auth_dones;
70
71 u32 dhchap_challenges;
72 u32 dhchap_replies;
73 u32 dhchap_successes;
74};
75
76/**
77 * Authentication related statistics
78 */
79struct bfa_auth_stats_s {
80 u32 auth_failures; /* authentication failures */
81 u32 auth_successes; /* authentication successes*/
82 struct auth_proto_stats_s auth_rx_stats; /* Rx protocol stats */
83 struct auth_proto_stats_s auth_tx_stats; /* Tx protocol stats */
84};
85
86/**
87 * Authentication hash function algorithms
88 */
89enum bfa_auth_algo {
90 BFA_AUTH_ALGO_MD5 = 1, /* Message-Digest algorithm 5 */
91 BFA_AUTH_ALGO_SHA1 = 2, /* Secure Hash Algorithm 1 */
92 BFA_AUTH_ALGO_MS = 3, /* MD5, then SHA-1 */
93 BFA_AUTH_ALGO_SM = 4, /* SHA-1, then MD5 */
94};
95
96/**
97 * DH Groups
98 *
99 * Current value could be combination of one or more of the following values
100 */
101enum bfa_auth_group {
102 BFA_AUTH_GROUP_DHNULL = 0, /* DH NULL (value == 0) */
103 BFA_AUTH_GROUP_DH768 = 1, /* DH group 768 (value == 1) */
104 BFA_AUTH_GROUP_DH1024 = 2, /* DH group 1024 (value == 2) */
105 BFA_AUTH_GROUP_DH1280 = 4, /* DH group 1280 (value == 3) */
106 BFA_AUTH_GROUP_DH1536 = 8, /* DH group 1536 (value == 4) */
107
108 BFA_AUTH_GROUP_ALL = 256 /* Use default DH group order
109 * 0, 1, 2, 3, 4 */
110};
111
112/**
113 * Authentication secret sources
114 */
115enum bfa_auth_secretsource {
116 BFA_AUTH_SECSRC_LOCAL = 1, /* locally configured */
117 BFA_AUTH_SECSRC_RADIUS = 2, /* use radius server */
118 BFA_AUTH_SECSRC_TACACS = 3, /* TACACS server */
119};
120
121/**
122 * Authentication attributes
123 */
124struct bfa_auth_attr_s {
125 enum bfa_auth_status status;
126 enum bfa_auth_algo algo;
127 enum bfa_auth_group dh_grp;
Jing Huangb85d0452010-07-08 19:48:49 -0700128 enum bfa_auth_rej_code rjt_code;
129 enum bfa_auth_rej_code_exp rjt_code_exp;
Jing Huang7725ccf2009-09-23 17:46:15 -0700130 u8 secret_set;
Jing Huangb85d0452010-07-08 19:48:49 -0700131 u8 resv[3];
Jing Huang7725ccf2009-09-23 17:46:15 -0700132};
133
134#endif /* __BFA_DEFS_AUTH_H__ */