david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[libc] Use __einfo() tuple as first argument to EUNIQ()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2013-04-18 01:05:32 +01:00
parent 0f7b3fa6f9
commit e42bc3aa37
6 changed files with 86 additions and 83 deletions

View File

@ -84,7 +84,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
__einfo_uniqify ( EINFO_EPROTO, OCSP_STATUS_UNAUTHORIZED, \ __einfo_uniqify ( EINFO_EPROTO, OCSP_STATUS_UNAUTHORIZED, \
"Request unauthorized" ) "Request unauthorized" )
#define EPROTO_STATUS( status ) \ #define EPROTO_STATUS( status ) \
EUNIQ ( EPROTO, (status), EPROTO_MALFORMED_REQUEST, \ EUNIQ ( EINFO_EPROTO, (status), EPROTO_MALFORMED_REQUEST, \
EPROTO_INTERNAL_ERROR, EPROTO_TRY_LATER, \ EPROTO_INTERNAL_ERROR, EPROTO_TRY_LATER, \
EPROTO_SIG_REQUIRED, EPROTO_UNAUTHORIZED ) EPROTO_SIG_REQUIRED, EPROTO_UNAUTHORIZED )

View File

@ -89,7 +89,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#define EINFO_EIO_COMPLETED \ #define EINFO_EIO_COMPLETED \
__einfo_uniqify ( EINFO_EIO, 0x0f, "Completed" ) __einfo_uniqify ( EINFO_EIO, 0x0f, "Completed" )
#define EIO_SENSE( key ) \ #define EIO_SENSE( key ) \
EUNIQ ( EIO, (key), EIO_NO_SENSE, EIO_RECOVERED_ERROR, \ EUNIQ ( EINFO_EIO, (key), EIO_NO_SENSE, EIO_RECOVERED_ERROR, \
EIO_NOT_READY, EIO_MEDIUM_ERROR, EIO_HARDWARE_ERROR, \ EIO_NOT_READY, EIO_MEDIUM_ERROR, EIO_HARDWARE_ERROR, \
EIO_ILLEGAL_REQUEST, EIO_UNIT_ATTENTION, \ EIO_ILLEGAL_REQUEST, EIO_UNIT_ATTENTION, \
EIO_DATA_PROTECT, EIO_BLANK_CHECK, EIO_VENDOR_SPECIFIC, \ EIO_DATA_PROTECT, EIO_BLANK_CHECK, EIO_VENDOR_SPECIFIC, \

View File

@ -93,7 +93,7 @@ FEATURE ( FEATURE_PROTOCOL, "SRP", DHCP_EB_FEATURE_SRP, 1 );
SRP_LOGIN_REJ_REASON_NO_MORE_CHANNELS, \ SRP_LOGIN_REJ_REASON_NO_MORE_CHANNELS, \
"RDMA channel limit reached for this initiator" ) "RDMA channel limit reached for this initiator" )
#define EPERM_LOGIN_REJ( reason_nibble ) \ #define EPERM_LOGIN_REJ( reason_nibble ) \
EUNIQ ( EPERM, (reason_nibble), EPERM_UNKNOWN, \ EUNIQ ( EINFO_EPERM, (reason_nibble), EPERM_UNKNOWN, \
EPERM_INSUFFICIENT_RESOURCES, EPERM_BAD_MAX_I_T_IU_LEN, \ EPERM_INSUFFICIENT_RESOURCES, EPERM_BAD_MAX_I_T_IU_LEN, \
EPERM_CANNOT_ASSOCIATE, EPERM_UNSUPPORTED_BUFFER_FORMAT, \ EPERM_CANNOT_ASSOCIATE, EPERM_UNSUPPORTED_BUFFER_FORMAT, \
EPERM_NO_MULTIPLE_CHANNELS, EPERM_NO_MORE_CHANNELS ) EPERM_NO_MULTIPLE_CHANNELS, EPERM_NO_MORE_CHANNELS )

View File

@ -187,8 +187,8 @@ extern char missing_errfile_declaration[] __attribute__ (( deprecated ));
/** /**
* Disambiguate a base error based on non-constant information * Disambiguate a base error based on non-constant information
* *
* @v error_base Base error * @v einfo_base Base error information
* @v uniq Error disambiguator * @v uniq Error disambiguator (0x00-0x1f)
* @v ... List of expected possible disambiguated errors * @v ... List of expected possible disambiguated errors
* @ret error Error * @ret error Error
* *
@ -200,9 +200,10 @@ extern char missing_errfile_declaration[] __attribute__ (( deprecated ));
* EUNIQ() should not be used for constant error disambiguators; use * EUNIQ() should not be used for constant error disambiguators; use
* __einfo_uniqify() instead. * __einfo_uniqify() instead.
*/ */
#define EUNIQ( errno, uniq, ... ) ( { \ #define EUNIQ( einfo_base, uniq, ... ) ( { \
euniq_discard ( 0, ##__VA_ARGS__); \ euniq_discard ( 0, ##__VA_ARGS__ ); \
( ( int ) ( (errno) | ( (uniq) << 8 ) ) ); } ) ( ( int ) ( __einfo_error ( einfo_base ) | \
( (uniq) << 8 ) ) ); } )
static inline void euniq_discard ( int dummy __unused, ... ) {} static inline void euniq_discard ( int dummy __unused, ... ) {}
/** /**

View File

@ -553,81 +553,83 @@ FILE_LICENCE ( GPL2_OR_LATER );
/** Make return status code from 802.11 status code */ /** Make return status code from 802.11 status code */
#define E80211_STATUS( stat ) \ #define E80211_STATUS( stat ) \
EUNIQ ( ( ( stat & 0x20 ) ? EHOSTUNREACH : ECONNREFUSED ), \ ( ( (stat) & 0x20 ) ? \
( stat &0x1f ), \ EUNIQ ( EINFO_EHOSTUNREACH, ( (stat) & 0x1f ), \
ECONNREFUSED_FAILURE, \ EHOSTUNREACH_QOS_FAILURE, \
ECONNREFUSED_CAPAB_UNSUPP, \ EHOSTUNREACH_QOS_NO_ROOM, \
ECONNREFUSED_REASSOC_INVALID, \ EHOSTUNREACH_LINK_IS_HORRIBLE, \
ECONNREFUSED_ASSOC_DENIED, \ EHOSTUNREACH_ASSOC_NEED_QOS, \
ECONNREFUSED_AUTH_ALGO_UNSUPP, \ EHOSTUNREACH_REQUEST_DECLINED, \
ECONNREFUSED_AUTH_SEQ_INVALID, \ EHOSTUNREACH_REQUEST_INVALID, \
ECONNREFUSED_AUTH_CHALL_INVALID, \ EHOSTUNREACH_TS_NOT_CREATED_AGAIN, \
ECONNREFUSED_AUTH_TIMEOUT, \ EHOSTUNREACH_INVALID_IE, \
ECONNREFUSED_ASSOC_NO_ROOM, \ EHOSTUNREACH_GROUP_CIPHER_INVALID, \
ECONNREFUSED_ASSOC_NEED_RATE, \ EHOSTUNREACH_PAIR_CIPHER_INVALID, \
ECONNREFUSED_ASSOC_NEED_SHORT_PMBL, \ EHOSTUNREACH_AKMP_INVALID, \
ECONNREFUSED_ASSOC_NEED_PBCC, \ EHOSTUNREACH_RSN_VERSION_UNSUPP, \
ECONNREFUSED_ASSOC_NEED_CHAN_AGILITY, \ EHOSTUNREACH_RSN_CAPAB_INVALID, \
ECONNREFUSED_ASSOC_NEED_SPECTRUM_MGMT, \ EHOSTUNREACH_CIPHER_REJECTED, \
ECONNREFUSED_ASSOC_BAD_POWER, \ EHOSTUNREACH_TS_NOT_CREATED_WAIT, \
ECONNREFUSED_ASSOC_BAD_CHANNELS, \ EHOSTUNREACH_DIRECT_LINK_FORBIDDEN, \
ECONNREFUSED_ASSOC_NEED_SHORT_SLOT, \ EHOSTUNREACH_DEST_NOT_PRESENT, \
ECONNREFUSED_ASSOC_NEED_DSSS_OFDM, \ EHOSTUNREACH_DEST_NOT_QOS, \
EHOSTUNREACH_QOS_FAILURE, \ EHOSTUNREACH_ASSOC_LISTEN_TOO_HIGH ) : \
EHOSTUNREACH_QOS_NO_ROOM, \ EUNIQ ( EINFO_ECONNREFUSED, ( (stat) & 0x1f ), \
EHOSTUNREACH_LINK_IS_HORRIBLE, \ ECONNREFUSED_FAILURE, \
EHOSTUNREACH_ASSOC_NEED_QOS, \ ECONNREFUSED_CAPAB_UNSUPP, \
EHOSTUNREACH_REQUEST_DECLINED, \ ECONNREFUSED_REASSOC_INVALID, \
EHOSTUNREACH_REQUEST_INVALID, \ ECONNREFUSED_ASSOC_DENIED, \
EHOSTUNREACH_TS_NOT_CREATED_AGAIN, \ ECONNREFUSED_AUTH_ALGO_UNSUPP, \
EHOSTUNREACH_INVALID_IE, \ ECONNREFUSED_AUTH_SEQ_INVALID, \
EHOSTUNREACH_GROUP_CIPHER_INVALID, \ ECONNREFUSED_AUTH_CHALL_INVALID, \
EHOSTUNREACH_PAIR_CIPHER_INVALID, \ ECONNREFUSED_AUTH_TIMEOUT, \
EHOSTUNREACH_AKMP_INVALID, \ ECONNREFUSED_ASSOC_NO_ROOM, \
EHOSTUNREACH_RSN_VERSION_UNSUPP, \ ECONNREFUSED_ASSOC_NEED_RATE, \
EHOSTUNREACH_RSN_CAPAB_INVALID, \ ECONNREFUSED_ASSOC_NEED_SHORT_PMBL, \
EHOSTUNREACH_CIPHER_REJECTED, \ ECONNREFUSED_ASSOC_NEED_PBCC, \
EHOSTUNREACH_TS_NOT_CREATED_WAIT, \ ECONNREFUSED_ASSOC_NEED_CHAN_AGILITY, \
EHOSTUNREACH_DIRECT_LINK_FORBIDDEN, \ ECONNREFUSED_ASSOC_NEED_SPECTRUM_MGMT, \
EHOSTUNREACH_DEST_NOT_PRESENT, \ ECONNREFUSED_ASSOC_BAD_POWER, \
EHOSTUNREACH_DEST_NOT_QOS, \ ECONNREFUSED_ASSOC_BAD_CHANNELS, \
EHOSTUNREACH_ASSOC_LISTEN_TOO_HIGH ) ECONNREFUSED_ASSOC_NEED_SHORT_SLOT, \
ECONNREFUSED_ASSOC_NEED_DSSS_OFDM ) )
/** Make return status code from 802.11 reason code */ /** Make return status code from 802.11 reason code */
#define E80211_REASON( reas ) \ #define E80211_REASON( reas ) \
EUNIQ ( ( ( reas & 0x20 ) ? ENETRESET : ECONNRESET ), \ ( ( (reas) & 0x20 ) ? \
( reas & 0x1f ), \ EUNIQ ( EINFO_ENETRESET, ( (reas) & 0x1f ), \
ECONNRESET_UNSPECIFIED, \ ENETRESET_QOS_UNSPECIFIED, \
ECONNRESET_AUTH_NO_LONGER_VALID, \ ENETRESET_QOS_OUT_OF_RESOURCES, \
ECONNRESET_LEAVING, \ ENETRESET_LINK_IS_HORRIBLE, \
ECONNRESET_INACTIVITY, \ ENETRESET_INVALID_TXOP, \
ECONNRESET_OUT_OF_RESOURCES, \ ENETRESET_REQUESTED_LEAVING, \
ECONNRESET_NEED_AUTH, \ ENETRESET_REQUESTED_NO_USE, \
ECONNRESET_NEED_ASSOC, \ ENETRESET_REQUESTED_NEED_SETUP, \
ECONNRESET_LEAVING_TO_ROAM, \ ENETRESET_REQUESTED_TIMEOUT, \
ECONNRESET_REASSOC_INVALID, \ ENETRESET_CIPHER_UNSUPPORTED ) : \
ECONNRESET_BAD_POWER, \ EUNIQ ( EINFO_ECONNRESET, ( (reas) & 0x1f ), \
ECONNRESET_BAD_CHANNELS, \ ECONNRESET_UNSPECIFIED, \
ECONNRESET_INVALID_IE, \ ECONNRESET_AUTH_NO_LONGER_VALID, \
ECONNRESET_MIC_FAILURE, \ ECONNRESET_LEAVING, \
ECONNRESET_4WAY_TIMEOUT, \ ECONNRESET_INACTIVITY, \
ECONNRESET_GROUPKEY_TIMEOUT, \ ECONNRESET_OUT_OF_RESOURCES, \
ECONNRESET_4WAY_INVALID, \ ECONNRESET_NEED_AUTH, \
ECONNRESET_GROUP_CIPHER_INVALID, \ ECONNRESET_NEED_ASSOC, \
ECONNRESET_PAIR_CIPHER_INVALID, \ ECONNRESET_LEAVING_TO_ROAM, \
ECONNRESET_AKMP_INVALID, \ ECONNRESET_REASSOC_INVALID, \
ECONNRESET_RSN_VERSION_INVALID, \ ECONNRESET_BAD_POWER, \
ECONNRESET_RSN_CAPAB_INVALID, \ ECONNRESET_BAD_CHANNELS, \
ECONNRESET_8021X_FAILURE, \ ECONNRESET_INVALID_IE, \
ECONNRESET_CIPHER_REJECTED, \ ECONNRESET_MIC_FAILURE, \
ENETRESET_QOS_UNSPECIFIED, \ ECONNRESET_4WAY_TIMEOUT, \
ENETRESET_QOS_OUT_OF_RESOURCES, \ ECONNRESET_GROUPKEY_TIMEOUT, \
ENETRESET_LINK_IS_HORRIBLE, \ ECONNRESET_4WAY_INVALID, \
ENETRESET_INVALID_TXOP, \ ECONNRESET_GROUP_CIPHER_INVALID, \
ENETRESET_REQUESTED_LEAVING, \ ECONNRESET_PAIR_CIPHER_INVALID, \
ENETRESET_REQUESTED_NO_USE, \ ECONNRESET_AKMP_INVALID, \
ENETRESET_REQUESTED_NEED_SETUP, \ ECONNRESET_RSN_VERSION_INVALID, \
ENETRESET_REQUESTED_TIMEOUT, \ ECONNRESET_RSN_CAPAB_INVALID, \
ENETRESET_CIPHER_UNSUPPORTED ) ECONNRESET_8021X_FAILURE, \
ECONNRESET_CIPHER_REJECTED ) )
#endif /* _IPXE_NET80211_ERR_H */ #endif /* _IPXE_NET80211_ERR_H */

View File

@ -45,8 +45,8 @@ FILE_LICENCE ( GPL2_OR_LATER );
#define ENOTSUP_CCMP __einfo_error ( EINFO_ENOTSUP_CCMP ) #define ENOTSUP_CCMP __einfo_error ( EINFO_ENOTSUP_CCMP )
#define EINFO_ENOTSUP_CCMP __einfo_uniqify ( EINFO_ENOTSUP, \ #define EINFO_ENOTSUP_CCMP __einfo_uniqify ( EINFO_ENOTSUP, \
( 0x10 | NET80211_CRYPT_CCMP ), "CCMP not supported" ) ( 0x10 | NET80211_CRYPT_CCMP ), "CCMP not supported" )
#define ENOTSUP_CRYPT( crypt ) \ #define ENOTSUP_CRYPT( crypt ) \
EUNIQ ( ENOTSUP, ( 0x10 | (crypt) ), \ EUNIQ ( EINFO_ENOTSUP, ( 0x10 | (crypt) ), \
ENOTSUP_WEP, ENOTSUP_TKIP, ENOTSUP_CCMP ) ENOTSUP_WEP, ENOTSUP_TKIP, ENOTSUP_CCMP )
/** Mapping from net80211 crypto/secprot types to RSN OUI descriptors */ /** Mapping from net80211 crypto/secprot types to RSN OUI descriptors */