- u_char lls_hello = op->ospf6_type == OSPF_TYPE_HELLO &&
- EXTRACT_32BITS(&op->ospf6_hello.hello_options) & OSPF6_OPTION_L;
- u_char lls_dd = op->ospf6_type == OSPF_TYPE_DD &&
- EXTRACT_32BITS(&op->ospf6_db.db_options) & OSPF6_OPTION_L;
-
+ int lls_hello = 0;
+ int lls_dd = 0;
+
+ type = EXTRACT_U_1(op->ospf6_type);
+ if (type == OSPF_TYPE_HELLO) {
+ const struct hello6 *hellop = (const struct hello6 *)((const uint8_t *)op + OSPF6HDR_LEN);
+ ND_TCHECK(hellop->hello_options);
+ if (EXTRACT_BE_U_4(hellop->hello_options) & OSPF6_OPTION_L)
+ lls_hello = 1;
+ } else if (type == OSPF_TYPE_DD) {
+ const struct dd6 *ddp = (const struct dd6 *)((const uint8_t *)op + OSPF6HDR_LEN);
+ ND_TCHECK(ddp->db_options);
+ if (EXTRACT_BE_U_4(ddp->db_options) & OSPF6_OPTION_L)
+ lls_dd = 1;
+ }