1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 Copyright (C) 2014 Intel Corporation. All rights reserved.
10 #include "time-util.h"
12 struct sd_ndisc_router
{
15 triple_timestamp timestamp
;
16 struct in6_addr address
;
18 /* The raw packet size. The data is appended to the object, accessible via NDIS_ROUTER_RAW() */
21 /* The current read index for the iterative option interface */
32 static inline void* NDISC_ROUTER_RAW(const sd_ndisc_router
*rt
) {
33 return (uint8_t*) rt
+ ALIGN(sizeof(sd_ndisc_router
));
36 static inline void *NDISC_ROUTER_OPTION_DATA(const sd_ndisc_router
*rt
) {
37 return ((uint8_t*) NDISC_ROUTER_RAW(rt
)) + rt
->rindex
;
40 static inline uint8_t NDISC_ROUTER_OPTION_TYPE(const sd_ndisc_router
*rt
) {
41 return ((uint8_t*) NDISC_ROUTER_OPTION_DATA(rt
))[0];
43 static inline size_t NDISC_ROUTER_OPTION_LENGTH(const sd_ndisc_router
*rt
) {
44 return ((uint8_t*) NDISC_ROUTER_OPTION_DATA(rt
))[1] * 8;
47 sd_ndisc_router
*ndisc_router_new(size_t raw_size
);
48 int ndisc_router_parse(sd_ndisc_router
*rt
);