|
@@ -11,6 +11,17 @@
|
11
|
11
|
*
|
12
|
12
|
*/
|
13
|
13
|
|
|
14
|
+/**
|
|
15
|
+ * @defgroup featurecat Feature categories
|
|
16
|
+ * @{
|
|
17
|
+ */
|
|
18
|
+
|
|
19
|
+#define FEATURE_PROTOCOL 01 /**< Network protocols */
|
|
20
|
+#define FEATURE_IMAGE 02 /**< Image formats */
|
|
21
|
+#define FEATURE_MISC 03 /**< Miscellaneous */
|
|
22
|
+
|
|
23
|
+/** @} */
|
|
24
|
+
|
14
|
25
|
/**
|
15
|
26
|
* @defgroup dhcpfeatures DHCP feature option tags
|
16
|
27
|
*
|
|
@@ -20,50 +31,58 @@
|
20
|
31
|
* @{
|
21
|
32
|
*/
|
22
|
33
|
|
23
|
|
-/** PXE API extensions */
|
24
|
|
-#define DHCP_EB_FEATURE_PXE_EXT 0x10
|
25
|
|
-
|
26
|
|
-/** iSCSI */
|
27
|
|
-#define DHCP_EB_FEATURE_ISCSI 0x11
|
28
|
|
-
|
29
|
|
-/** AoE */
|
30
|
|
-#define DHCP_EB_FEATURE_AOE 0x12
|
31
|
|
-
|
32
|
|
-/** HTTP */
|
33
|
|
-#define DHCP_EB_FEATURE_HTTP 0x13
|
34
|
|
-
|
35
|
|
-/** HTTPS */
|
36
|
|
-#define DHCP_EB_FEATURE_HTTPS 0x14
|
|
34
|
+#define DHCP_EB_FEATURE_PXE_EXT 0x10 /**< PXE API extensions */
|
|
35
|
+#define DHCP_EB_FEATURE_ISCSI 0x11 /**< iSCSI protocol */
|
|
36
|
+#define DHCP_EB_FEATURE_AOE 0x12 /**< AoE protocol */
|
|
37
|
+#define DHCP_EB_FEATURE_HTTP 0x13 /**< HTTP protocol */
|
|
38
|
+#define DHCP_EB_FEATURE_HTTPS 0x14 /**< HTTPS protocol */
|
|
39
|
+#define DHCP_EB_FEATURE_TFTP 0x15 /**< TFTP protocol */
|
|
40
|
+#define DHCP_EB_FEATURE_FTP 0x16 /**< FTP protocol */
|
|
41
|
+#define DHCP_EB_FEATURE_DNS 0x17 /**< DNS protocol */
|
|
42
|
+#define DHCP_EB_FEATURE_BZIMAGE 0x18 /**< bzImage format */
|
|
43
|
+#define DHCP_EB_FEATURE_MULTIBOOT 0x19 /**< Multiboot format */
|
|
44
|
+#define DHCP_EB_FEATURE_NBI 0x20 /**< NBI format */
|
|
45
|
+#define DHCP_EB_FEATURE_PXE 0x21 /**< PXE format */
|
37
|
46
|
|
38
|
47
|
/** @} */
|
39
|
48
|
|
40
|
49
|
/** Declare a feature code for DHCP */
|
41
|
|
-#define __dhcp_feature __table ( uint8_t, dhcp_features, 01 )
|
|
50
|
+#define __dhcp_feature( category ) \
|
|
51
|
+ __table ( uint8_t, dhcp_features, category )
|
42
|
52
|
|
43
|
53
|
/** Construct a DHCP feature table entry */
|
44
|
|
-#define DHCP_FEATURE( feature_opt, version ) \
|
45
|
|
- _DHCP_FEATURE ( OBJECT, feature_opt, version )
|
46
|
|
-#define _DHCP_FEATURE( _name, feature_opt, version ) \
|
47
|
|
- __DHCP_FEATURE ( _name, feature_opt, version )
|
48
|
|
-#define __DHCP_FEATURE( _name, feature_opt, version ) \
|
49
|
|
- uint8_t __dhcp_feature_ ## _name [] __dhcp_feature = { \
|
50
|
|
- feature_opt, DHCP_BYTE ( version ) \
|
|
54
|
+#define DHCP_FEATURE( category, feature_opt, version ) \
|
|
55
|
+ _DHCP_FEATURE ( category, OBJECT, feature_opt, version )
|
|
56
|
+#define _DHCP_FEATURE( category, _name, feature_opt, version ) \
|
|
57
|
+ __DHCP_FEATURE ( category, _name, feature_opt, version )
|
|
58
|
+#define __DHCP_FEATURE( category, _name, feature_opt, version ) \
|
|
59
|
+ uint8_t __dhcp_feature_ ## _name [] __dhcp_feature ( category ) = { \
|
|
60
|
+ feature_opt, DHCP_BYTE ( version ) \
|
51
|
61
|
};
|
52
|
62
|
|
|
63
|
+/** A named feature */
|
|
64
|
+struct feature {
|
|
65
|
+ /** Feature name */
|
|
66
|
+ char *name;
|
|
67
|
+};
|
|
68
|
+
|
53
|
69
|
/** Declare a named feature */
|
54
|
|
-#define __feature_name __table ( char *, features, 01 )
|
|
70
|
+#define __feature_name( category ) \
|
|
71
|
+ __table ( struct feature, features, category )
|
55
|
72
|
|
56
|
73
|
/** Construct a named feature */
|
57
|
|
-#define FEATURE_NAME( text ) \
|
58
|
|
- _FEATURE_NAME ( OBJECT, text )
|
59
|
|
-#define _FEATURE_NAME( _name, text ) \
|
60
|
|
- __FEATURE_NAME ( _name, text )
|
61
|
|
-#define __FEATURE_NAME( _name, text ) \
|
62
|
|
- char * __feature_ ## _name __feature_name = text;
|
|
74
|
+#define FEATURE_NAME( category, text ) \
|
|
75
|
+ _FEATURE_NAME ( category, OBJECT, text )
|
|
76
|
+#define _FEATURE_NAME( category, _name, text ) \
|
|
77
|
+ __FEATURE_NAME ( category, _name, text )
|
|
78
|
+#define __FEATURE_NAME( category, _name, text ) \
|
|
79
|
+ struct feature __feature_ ## _name __feature_name ( category ) = { \
|
|
80
|
+ .name = text, \
|
|
81
|
+ };
|
63
|
82
|
|
64
|
83
|
/** Declare a feature */
|
65
|
|
-#define FEATURE( text, feature_opt, version ) \
|
66
|
|
- FEATURE_NAME ( text ); \
|
67
|
|
- DHCP_FEATURE ( feature_opt, version );
|
|
84
|
+#define FEATURE( category, text, feature_opt, version ) \
|
|
85
|
+ FEATURE_NAME ( category, text ); \
|
|
86
|
+ DHCP_FEATURE ( category, feature_opt, version );
|
68
|
87
|
|
69
|
88
|
#endif /* _GPXE_FEATURES_H */
|