Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/il/ip/ip.c

    r79ae36dd rccca251  
    7777#include <il_skel.h>
    7878
    79 // FIXME: remove this header
    80 #include <kernel/ipc/ipc_methods.h>
    81 
    8279/** IP module name. */
    8380#define NAME                    "ip"
     
    204201
    205202        /* Set the destination address */
    206         switch (GET_IP_HEADER_VERSION(header)) {
     203        switch (header->version) {
    207204        case IPVERSION:
    208205                addrlen = sizeof(dest_in);
     
    638635
    639636        /* Process all IP options */
    640         while (next < GET_IP_HEADER_LENGTH(first)) {
     637        while (next < first->header_length) {
    641638                option = (ip_option_t *) (((uint8_t *) first) + next);
    642639                /* Skip end or noop */
     
    659656        if (length % 4) {
    660657                bzero(((uint8_t *) last) + length, 4 - (length % 4));
    661                 SET_IP_HEADER_LENGTH(last, (length / 4 + 1));
     658                last->header_length = length / 4 + 1;
    662659        } else {
    663                 SET_IP_HEADER_LENGTH(last, (length / 4));
     660                last->header_length = length / 4;
    664661        }
    665662
     
    709706                return rc;
    710707       
    711         SET_IP_HEADER_VERSION(header, IPV4);
    712         SET_IP_HEADER_FRAGMENT_OFFSET_HIGH(header, 0);
     708        header->version = IPV4;
     709        header->fragment_offset_high = 0;
    713710        header->fragment_offset_low = 0;
    714711        header->header_checksum = 0;
     
    738735                        memcpy(middle_header, last_header,
    739736                            IP_HEADER_LENGTH(last_header));
    740                         SET_IP_HEADER_FLAGS(header,
    741                             (GET_IP_HEADER_FLAGS(header) | IPFLAG_MORE_FRAGMENTS));
     737                        header->flags |= IPFLAG_MORE_FRAGMENTS;
    742738                        middle_header->total_length =
    743739                            htons(packet_get_data_length(next));
    744                         SET_IP_HEADER_FRAGMENT_OFFSET_HIGH(middle_header,
    745                             IP_COMPUTE_FRAGMENT_OFFSET_HIGH(length));
     740                        middle_header->fragment_offset_high =
     741                            IP_COMPUTE_FRAGMENT_OFFSET_HIGH(length);
    746742                        middle_header->fragment_offset_low =
    747743                            IP_COMPUTE_FRAGMENT_OFFSET_LOW(length);
     
    772768                middle_header->total_length =
    773769                    htons(packet_get_data_length(next));
    774                 SET_IP_HEADER_FRAGMENT_OFFSET_HIGH(middle_header,
    775                     IP_COMPUTE_FRAGMENT_OFFSET_HIGH(length));
     770                middle_header->fragment_offset_high =
     771                    IP_COMPUTE_FRAGMENT_OFFSET_HIGH(length);
    776772                middle_header->fragment_offset_low =
    777773                    IP_COMPUTE_FRAGMENT_OFFSET_LOW(length);
     
    789785                length += packet_get_data_length(next);
    790786                free(last_header);
    791                 SET_IP_HEADER_FLAGS(header,
    792                     (GET_IP_HEADER_FLAGS(header) | IPFLAG_MORE_FRAGMENTS));
     787                header->flags |= IPFLAG_MORE_FRAGMENTS;
    793788        }
    794789
     
    839834        new_header->total_length = htons(IP_HEADER_LENGTH(new_header) + length);
    840835        offset = IP_FRAGMENT_OFFSET(header) + IP_HEADER_DATA_LENGTH(header);
    841         SET_IP_HEADER_FRAGMENT_OFFSET_HIGH(new_header,
    842             IP_COMPUTE_FRAGMENT_OFFSET_HIGH(offset));
     836        new_header->fragment_offset_high =
     837            IP_COMPUTE_FRAGMENT_OFFSET_HIGH(offset);
    843838        new_header->fragment_offset_low =
    844839            IP_COMPUTE_FRAGMENT_OFFSET_LOW(offset);
     
    870865                return NULL;
    871866        memcpy(middle, last, IP_HEADER_LENGTH(last));
    872         SET_IP_HEADER_FLAGS(middle,
    873             (GET_IP_HEADER_FLAGS(middle) | IPFLAG_MORE_FRAGMENTS));
     867        middle->flags |= IPFLAG_MORE_FRAGMENTS;
    874868        return middle;
    875869}
     
    928922
    929923        /* Fragmentation forbidden? */
    930         if(GET_IP_HEADER_FLAGS(header) & IPFLAG_DONT_FRAGMENT)
     924        if(header->flags & IPFLAG_DONT_FRAGMENT)
    931925                return EPERM;
    932926
     
    964958
    965959        /* Mark the first as fragmented */
    966         SET_IP_HEADER_FLAGS(header,
    967             (GET_IP_HEADER_FLAGS(header) | IPFLAG_MORE_FRAGMENTS));
     960        header->flags |= IPFLAG_MORE_FRAGMENTS;
    968961
    969962        /* Create middle fragments */
     
    13261319        int rc;
    13271320
    1328         if ((GET_IP_HEADER_FLAGS(header) & IPFLAG_MORE_FRAGMENTS) ||
     1321        if ((header->flags & IPFLAG_MORE_FRAGMENTS) ||
    13291322            IP_FRAGMENT_OFFSET(header)) {
    13301323                // TODO fragmented
     
    13321325        }
    13331326       
    1334         switch (GET_IP_HEADER_VERSION(header)) {
     1327        switch (header->version) {
    13351328        case IPVERSION:
    13361329                addrlen = sizeof(src_in);
     
    14541447
    14551448        /* Set the destination address */
    1456         switch (GET_IP_HEADER_VERSION(header)) {
     1449        switch (header->version) {
    14571450        case IPVERSION:
    14581451                addrlen = sizeof(addr_in);
     
    19161909       
    19171910        *answer_count = 0;
    1918        
    1919         if (!IPC_GET_IMETHOD(*call))
     1911        switch (IPC_GET_IMETHOD(*call)) {
     1912        case IPC_M_PHONE_HUNGUP:
    19201913                return EOK;
    19211914       
    1922         switch (IPC_GET_IMETHOD(*call)) {
    19231915        case IPC_M_CONNECT_TO_ME:
    19241916                return ip_register(IL_GET_PROTO(*call), IL_GET_SERVICE(*call),
Note: See TracChangeset for help on using the changeset viewer.