71,7 → 71,7 |
|
int packet_trim( packet_t packet, size_t prefix, size_t suffix ){ |
if( ! packet_is_valid( packet )) return EINVAL; |
if( prefix + suffix > packet->data_end - packet->data_start ) return ENOMEM; |
if( prefix + suffix > PACKET_DATA_LENGTH( packet )) return ENOMEM; |
packet->data_start += prefix; |
packet->data_end -= suffix; |
return EOK; |
91,7 → 91,7 |
|
size_t packet_get_data_length( const packet_t packet ){ |
if( ! packet_is_valid( packet )) return 0; |
return packet->data_end - packet->data_start; |
return PACKET_DATA_LENGTH( packet ); |
} |
|
void * packet_get_data( const packet_t packet ){ |
104,7 → 104,7 |
size_t allocated; |
|
if( ! packet_is_valid( packet )) return EINVAL; |
allocated = packet->dest_addr - packet->src_addr; |
allocated = PACKET_MAX_ADDRESS_LENGTH( packet ); |
if( allocated < addr_len ) return ENOMEM; |
padding = allocated - addr_len; |
packet->addr_len = addr_len; |
123,5 → 123,30 |
return EOK; |
} |
|
packet_t packet_get_copy( int phone, packet_t packet ){ |
packet_t copy; |
uint8_t * src; |
uint8_t * dest; |
size_t addrlen; |
|
if( ! packet_is_valid( packet )) return NULL; |
// get a new packet |
copy = packet_get_4( phone, PACKET_DATA_LENGTH( packet ), PACKET_MAX_ADDRESS_LENGTH( packet ), packet->max_prefix, PACKET_MIN_SUFFIX( packet )); |
if( ! copy ) return NULL; |
// get addresses |
addrlen = packet_get_addr( packet, & src, & dest ); |
// copy data |
if(( packet_copy_data( copy, packet_get_data( packet ), PACKET_DATA_LENGTH( packet )) == EOK ) |
// copy addresses if present |
&& (( addrlen <= 0 ) || ( packet_set_addr( copy, src, dest, addrlen ) == EOK ))){ |
copy->order = packet->order; |
copy->metric = packet->metric; |
return copy; |
}else{ |
pq_release( phone, copy->packet_id ); |
return NULL; |
} |
} |
|
/** @} |
*/ |