@@ -121,6 +121,10 @@ struct dhcp6_relay {
121121/* options */
122122#define DH6OPT_CLIENTID 1
123123#define DH6OPT_SERVERID 2
124+ # define DUID_LLT 1 /* RFC8415 */
125+ # define DUID_EN 2 /* RFC8415 */
126+ # define DUID_LL 3 /* RFC8415 */
127+ # define DUID_UUID 4 /* RFC6355 */
124128#define DH6OPT_IA_NA 3
125129#define DH6OPT_IA_TA 4
126130#define DH6OPT_IA_ADDR 5
@@ -320,7 +324,7 @@ dhcp6opt_print(netdissect_options *ndo,
320324 }
321325 tp = (const u_char * )(dh6o + 1 );
322326 switch (GET_BE_U_2 (tp )) {
323- case 1 :
327+ case DUID_LLT :
324328 if (optlen >= 2 + 6 ) {
325329 ND_PRINT (" hwaddr/time type %u time %u " ,
326330 GET_BE_U_2 (tp + 2 ),
@@ -335,7 +339,7 @@ dhcp6opt_print(netdissect_options *ndo,
335339 ND_PRINT (" ?)" );
336340 }
337341 break ;
338- case 2 :
342+ case DUID_EN :
339343 if (optlen >= 2 + 4 ) {
340344 ND_PRINT (" enterprise %u " , GET_BE_U_4 (tp + 2 ));
341345 for (i = 2 + 4 ; i < optlen ; i ++ )
@@ -348,7 +352,7 @@ dhcp6opt_print(netdissect_options *ndo,
348352 ND_PRINT (" ?)" );
349353 }
350354 break ;
351- case 3 :
355+ case DUID_LL :
352356 if (optlen >= 2 + 2 ) {
353357 ND_PRINT (" hwaddr type %u " ,
354358 GET_BE_U_2 (tp + 2 ));
@@ -362,6 +366,19 @@ dhcp6opt_print(netdissect_options *ndo,
362366 ND_PRINT (" ?)" );
363367 }
364368 break ;
369+ case DUID_UUID :
370+ ND_PRINT (" uuid " );
371+ if (optlen == 2 + 16 ) {
372+ for (i = 2 ; i < optlen ; i ++ )
373+ ND_PRINT ("%02x" ,
374+ GET_U_1 (tp + i ));
375+ /*(*/
376+ ND_PRINT (")" );
377+ } else {
378+ /*(*/
379+ ND_PRINT (" ?)" );
380+ }
381+ break ;
365382 default :
366383 ND_PRINT (" type %u)" , GET_BE_U_2 (tp ));
367384 break ;
0 commit comments