2004-10-05 Paul Jakma <paul@dishone.st>

* sockopt.{c,h}: add sockopt_iphdrincl_swab_{htosys,systoh},
          functions to change byte order between system IP_HDRINCL order
          and host order.
This commit is contained in:
paul 2004-10-05 14:33:43 +00:00
parent 7347a2ad7c
commit 96e27c9928
3 changed files with 39 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2004-10-05 Paul Jakma <paul@dishone.st>
* sockopt.{c,h}: add sockopt_iphdrincl_swab_{htosys,systoh},
functions to change byte order between system IP_HDRINCL order
and host order.
2004-10-04 Hasso Tepper <hasso at quagga.net>
* memory.c, memory.h: Make char * argument of strdup functions const.

View File

@ -360,3 +360,29 @@ getsockopt_ifindex (int af, struct msghdr *msgh)
return (ifindex = 0);
}
}
/* swab iph between order system uses for IP_HDRINCL and host order */
void
sockopt_iphdrincl_swab_htosys (struct ip *iph)
{
/* BSD and derived take iph in network order, except for
* ip_len and ip_off
*/
#ifndef HAVE_IP_HDRINCL_BSD_ORDER
iph->ip_len = htons(iph->ip_len);
iph->ip_off = htons(iph->ip_off);
#endif /* HAVE_IP_HDRINCL_BSD_ORDER */
iph->ip_id = htons(iph->ip_id);
}
void
sockopt_iphdrincl_swab_systoh (struct ip *iph)
{
#ifndef HAVE_IP_HDRINCL_BSD_ORDER
iph->ip_len = ntohs(iph->ip_len);
iph->ip_off = ntohs(iph->ip_off);
#endif /* HAVE_IP_HDRINCL_BSD_ORDER */
iph->ip_id = ntohs(iph->ip_id);
}

View File

@ -92,4 +92,11 @@ int setsockopt_pktinfo (int, int, int);
/* Ask for, and get, ifindex, by whatever method is supported. */
int setsockopt_ifindex (int, int, int);
int getsockopt_ifindex (int, struct msghdr *);
/* swab the fields in iph between the host order and system order expected
* for IP_HDRINCL.
*/
void sockopt_iphdrincl_swab_htosys (struct ip *iph);
void sockopt_iphdrincl_swab_systoh (struct ip *iph);
#endif /*_ZEBRA_SOCKOPT_H */