[radvd-devel-l] how is the length field calcuted for the radvd
options
Magesh mannar
mageshmannar at yahoo.com
Tue Feb 28 06:25:37 EST 2006
Hi
I am going through the radvd src code. In send.c program, i find the send_ra() fn which creates the various options and sends the ra using sendmsg.
I suppose the msgs are created in the TLV format. I am wondering how the length filed is calculated. For example, while creating the prefix info option, the length field is set to 4 (pinfo->nd_opt_pi_len = 4;). Can you please let me know how the length field is calculated and how it is 4 for the prefix option
while(prefix)
{
dlog(LOG_DEBUG, 3, "Adding prefix on %p", prefix);
if( prefix->enabled )
{
struct nd_opt_prefix_info *pinfo;
pinfo = (struct nd_opt_prefix_info *) (buff + len);
pinfo->nd_opt_pi_type = ND_OPT_PREFIX_INFORMATION;
pinfo->nd_opt_pi_len = 4;
pinfo->nd_opt_pi_prefix_len = prefix->PrefixLen;
pinfo->nd_opt_pi_flags_reserved =
(prefix->AdvOnLinkFlag)?ND_OPT_PI_FLAG_ONLINK:0;
pinfo->nd_opt_pi_flags_reserved |=
(prefix->AdvAutonomousFlag)?ND_OPT_PI_FLAG_AUTO:0;
/* Mobile IPv6 ext */
pinfo->nd_opt_pi_flags_reserved |=
(prefix->AdvRouterAddr)?ND_OPT_PI_FLAG_RADDR:0;
pinfo->nd_opt_pi_valid_time = htonl(prefix->AdvValidLifetime);
pinfo->nd_opt_pi_preferred_time = htonl(prefix->AdvPreferredLifetime);
pinfo->nd_opt_pi_reserved2 = 0;
memcpy(&pinfo->nd_opt_pi_prefix, &prefix->Prefix,
sizeof(struct in6_addr));
len += sizeof(*pinfo);
}
Sorry for troubling with a trivial doubt.
Many thanks
Magesh
---------------------------------
Yahoo! Mail
Bring photos to life! New PhotoMail makes sharing a breeze.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.litech.org/pipermail/radvd-devel-l/attachments/20060228/da39374a/attachment.htm
More information about the radvd-devel-l
mailing list