RTNETLINK (3)
Macros to manipuate rtnetlink messages
SYNOPSIS
#include <asm/types.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
#include <sys/socket.h>
rtnetlink_socket = socket(PF_NETLINK, int socket_type , NETLINK_ROUTE);
int RTA_OK(struct rtattr *rta, int rtabuflen);
void *RTA_DATA(struct rtattr *rta);
unsigned int RTA_PAYLOAD(struct rtattr *rta);
struct rtattr *RTA_NEXT(struct rtattr *rta, unsigned int rtabuflen);
unsigned int RTA_LENGTH(unsigned int length);
unsigned int RTA_SPACE(unsigned int length);
DESCRIPTION
All
rtnetlink (7)
messages consist of a
netlink (7)
message header and appended attributes. The attributes should be only
manipulated using the macros provided here.
RTA_OK( rta , attrlen )
returns true if
rta
points to a valid routing attribute;
attrlen
is the running length of the attribute buffer.
When not true then you must assume there are no more attributes in the
message, even if
attrlen
is non-zero.
RTA_DATA( rta )
returns a pointer to the start of this attribute's data.
RTA_PAYLOAD( rta )
returns the length of this attribute's data.
RTA_NEXT( rta , attrlen )
gets the next attribute after
rta .
Calling this macro will update
attrlen .
You should use
RTA_OK
to check for the validity of the returned pointer.
RTA_LENGTH( len )
returns the length which is required for
len
bytes of data plus the header.
RTA_SPACE( len )
returns the amount of space which will be needed in the message with
len
bytes of data.
EXAMPLE
|
|