[systemd-devel] [PATCH 01/28] dhcp: Add DHCP protocol structures and initial defines

Marcel Holtmann marcel at holtmann.org
Wed Nov 13 16:50:41 PST 2013


Hi Zbyszek,

>>>>> +#define BOOTREQUEST                             1
>>>>> +#define BOOTREPLY                               2
>>>>> +
>>>>> +#define DHCP_DISCOVER                           1
>>>>> +#define DHCP_OFFER                              2
>>>>> +#define DHCP_REQUEST                            3
>>>>> +#define DHCP_DECLINE                            4
>>>>> +#define DHCP_ACK                                5
>>>>> +#define DHCP_NAK                                6
>>>>> +#define DHCP_RELEASE                            7
>>>>> +
>>>>> +#define DHCP_OVERLOAD_FILE                      1
>>>>> +#define DHCP_OVERLOAD_SNAME                     2
>>>>> +
>>>>> +#define DHCP_OPTION_PAD                         0
>>>>> +#define DHCP_OPTION_SUBNET_MASK                 1
>>>>> +#define DHCP_OPTION_ROUTER                      3
>>>>> +#define DHCP_OPTION_DOMAIN_NAME_SERVER          6
>>>>> +#define DHCP_OPTION_HOST_NAME                   12
>>>>> +#define DHCP_OPTION_DOMAIN_NAME                 15
>>>>> +#define DHCP_OPTION_NTP_SERVER                  42
>>>>> +#define DHCP_OPTION_REQUESTED_IP_ADDRESS        50
>>>>> +#define DHCP_OPTION_OVERLOAD                    52
>>>>> +#define DHCP_OPTION_MESSAGE_TYPE                53
>>>>> +#define DHCP_OPTION_PARAMETER_REQUEST_LIST      55
>>>>> +#define DHCP_OPTION_END                         255
>>>> 
>>>> For defines like these I'd really suggest using anonymous enums. It's a
>>>> good thing if the compiler knows these things, not just the
>>>> pre-processor...
>>> 
>>> these are wire protocol definitions. What benefit do you gain if the
>>> compiler knows them. You always have to handle invalid cases anyway
>>> since malicious servers are a reality.
>> 
>> For example, it's nicer to work with gdb if it can resolve them...
> You'll also get an error if you use an enum value of one kind
> in a call requiring an enum of different type.

as I said, these are wire protocol definitions. They come in as bits and bytes and not as enums.

Regards

Marcel



More information about the systemd-devel mailing list