45,10 → 45,10 |
|
#include "ip_header.h" |
|
int ip_client_prepare_packet( packet_t packet, int protocol, int ttl, int tos, int dont_fragment, int ipopt_length ){ |
int ip_client_prepare_packet( packet_t packet, ip_protocol_t protocol, ip_ttl_t ttl, ip_tos_t tos, int dont_fragment, size_t ipopt_length ){ |
ip_header_ref header; |
uint8_t * data; |
int padding; |
size_t padding; |
|
padding = ipopt_length % 4; |
if( padding ){ |
59,8 → 59,8 |
if( ! data ) return ENOMEM; |
while( padding -- ) data[ sizeof( ip_header_t ) + padding ] = IPOPT_NOOP; |
header = ( ip_header_ref ) data; |
header->ihl = ( sizeof( ip_header_t ) + ipopt_length ) / 4; |
header->ttl = ( ttl > 0 ) ? (( ttl <= MAXTTL ) ? ttl : MAXTTL ) : IPDEFTTL; |
header->ihl = ( uint8_t ) ( sizeof( ip_header_t ) + ipopt_length ) / 4; |
header->ttl = ttl ? (( ttl <= MAXTTL ) ? ttl : MAXTTL ) : IPDEFTTL; |
header->tos = tos; |
header->protocol = protocol; |
if( dont_fragment ) header->flags = IPFLAG_DONT_FRAGMENT; |