Lines Matching refs:header

310 		TRACE("    remove header %d bytes", previous->fragment.end - start);
464 dump_ipv4_header(ipv4_header &header)
479 struct pretty_ipv4* src = (struct pretty_ipv4*)&header.source;
480 struct pretty_ipv4* dst = (struct pretty_ipv4*)&header.destination;
481 dprintf(" version: %d\n", header.version);
482 dprintf(" header_length: 4 * %d\n", header.header_length);
483 dprintf(" service_type: %d\n", header.service_type);
484 dprintf(" total_length: %d\n", header.TotalLength());
485 dprintf(" id: %d\n", ntohs(header.id));
487 header.FragmentOffset() & IP_FRAGMENT_OFFSET_MASK,
488 (header.FragmentOffset() & IP_RESERVED_FLAG) ? 'r' : '-',
489 (header.FragmentOffset() & IP_DONT_FRAGMENT) ? 'd' : '-',
490 (header.FragmentOffset() & IP_MORE_FRAGMENTS) ? 'm' : '-');
491 dprintf(" time_to_live: %d\n", header.time_to_live);
492 dprintf(" protocol: %d\n", header.protocol);
493 dprintf(" checksum: %d\n", ntohs(header.checksum));
539 reassemble_fragments(const ipv4_header &header, net_buffer** _buffer)
545 key.source = (in_addr_t)header.source;
546 key.destination = (in_addr_t)header.destination;
547 key.id = header.id;
548 key.protocol = header.protocol;
568 uint16 fragmentOffset = header.FragmentOffset();
570 uint16 end = start + header.TotalLength() - header.HeaderLength();
576 // Remove header unless this is the first fragment
578 gBufferModule->remove_header(buffer, header.HeaderLength());
628 ipv4_header* header = &bufferHeader.Data();
642 header->total_length = htons(fragmentLength + headerLength);
643 header->fragment_offset = htons((lastFragment ? 0 : IP_MORE_FRAGMENTS)
645 header->checksum = 0;
646 header->checksum = gStackModule->checksum((uint8*)header,
665 // copy header to fragment
666 status = gBufferModule->prepend(fragmentBuffer, header, headerLength);
762 // buffer still has the IP header, and it won't in the
1511 // Add IP header (if needed)
1514 NetBufferPrepend<ipv4_header> header(buffer);
1515 if (header.Status() != B_OK)
1516 return header.Status();
1518 header->version = IPV4_VERSION;
1519 header->header_length = sizeof(ipv4_header) / 4;
1520 header->service_type = protocol ? protocol->service_type : 0;
1521 header->total_length = htons(buffer->size);
1522 header->id = htons(atomic_add(&sPacketID, 1));
1523 header->fragment_offset = 0;
1525 header->time_to_live = (buffer->flags & MSG_MCAST) != 0
1528 header->time_to_live = (buffer->flags & MSG_MCAST) != 0
1531 header->protocol = protocol
1533 header->checksum = 0;
1535 header->source = source.sin_addr.s_addr;
1536 header->destination = destination.sin_addr.s_addr;
1538 TRACE_ONLY(dump_ipv4_header(*header));
1541 NetBufferHeaderReader<ipv4_header> header(buffer);
1542 if (header.Status() != B_OK)
1543 return header.Status();
1545 if (header->source == 0) {
1546 header->source = source.sin_addr.s_addr;
1547 header->checksum = 0;
1548 header.Sync();
1553 TRACE_ONLY(dump_ipv4_header(*header));
1593 TRACE_SK(protocol, " SendRoutedData(): header chksum: %" B_PRIu32
1732 ipv4_header& header = bufferHeader.Data();
1733 TRACE_ONLY(dump_ipv4_header(header));
1735 if (header.version != IPV4_VERSION)
1738 uint16 packetLength = header.TotalLength();
1739 headerLength = header.HeaderLength();
1755 fill_sockaddr_in(&destination, header.destination);
1757 if (header.destination == INADDR_BROADCAST) {
1764 } else if (IN_MULTICAST(ntohl(header.destination))) {
1787 fill_sockaddr_in((struct sockaddr_in*)buffer->source, header.source);
1790 buffer->protocol = header.protocol;
1794 ntohl(header.source), ntohl(header.destination));
1811 uint16 fragmentOffset = header.FragmentOffset();
1816 status = reassemble_fragments(header, &buffer);
1829 // we must no longer access bufferHeader or header anymore after
1835 // Preserve the ipv4 header for ICMP processing
1838 // the header is of variable size and may include IP options
1887 ipv4_header& header = bufferHeader.Data();
1888 TRACE_ONLY(dump_ipv4_header(header));
1891 uint16 headerLength = header.HeaderLength();
1892 if (header.version != IPV4_VERSION
1903 fill_sockaddr_in((struct sockaddr_in*)buffer->source, header.source);
1905 header.destination);
1907 if (header.destination == INADDR_BROADCAST)
1909 else if (IN_MULTICAST(ntohl(header.destination)))
1916 ntohl(header.source), ntohl(header.destination));
1920 buffer->protocol = header.protocol;