Changeset 02a09ed in mainline for uspace/srv/net/inetsrv/inet_link.c


Ignore:
Timestamp:
2013-06-28T20:20:03Z (11 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1d24ad3
Parents:
edf0d27
Message:

add basic infrastructure for IPv6 (inactive)
make inet_addr_t a universal address type

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/inetsrv/inet_link.c

    redf0d27 r02a09ed  
    4343#include <stdlib.h>
    4444#include <str.h>
    45 
     45#include <net/socket_codes.h>
    4646#include "addrobj.h"
    4747#include "inetsrv.h"
     
    4949#include "pdu.h"
    5050
    51 static int inet_link_open(service_id_t sid);
    52 static int inet_iplink_recv(iplink_t *ilink, iplink_sdu_t *sdu);
     51static int inet_link_open(service_id_t);
     52static int inet_iplink_recv(iplink_t *, iplink_recv_sdu_t *, uint16_t);
    5353
    5454static iplink_ev_ops_t inet_iplink_ev_ops = {
     
    5959static FIBRIL_MUTEX_INITIALIZE(inet_discovery_lock);
    6060
    61 static int inet_iplink_recv(iplink_t *iplink, iplink_sdu_t *sdu)
    62 {
     61static int inet_iplink_recv(iplink_t *iplink, iplink_recv_sdu_t *sdu, uint16_t af)
     62{
     63        log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_iplink_recv()");
     64       
     65        int rc;
    6366        inet_packet_t packet;
    64         int rc;
    65 
    66         log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_iplink_recv()");
    67         rc = inet_pdu_decode(sdu->data, sdu->size, &packet);
     67       
     68        switch (af) {
     69        case AF_INET:
     70                rc = inet_pdu_decode(sdu->data, sdu->size, &packet);
     71                break;
     72        case AF_INET6:
     73                // FIXME TODO
     74                return ENOTSUP;
     75        default:
     76                log_msg(LOG_DEFAULT, LVL_DEBUG, "invalid address family");
     77                return EINVAL;
     78        }
     79       
    6880        if (rc != EOK) {
    6981                log_msg(LOG_DEFAULT, LVL_DEBUG, "failed decoding PDU");
     
    228240
    229241        return EOK;
    230 
     242       
    231243error:
    232244        if (ilink->iplink != NULL)
     
    277289       
    278290        iplink_sdu_t sdu;
    279        
    280         int rc = inet_addr_pack(lsrc, &sdu.lsrc);
    281         if (rc != EOK)
    282                 return rc;
    283        
    284         rc = inet_addr_pack(ldest, &sdu.ldest);
    285         if (rc != EOK)
    286                 return rc;
    287        
    288291        size_t offs = 0;
     292        int rc;
     293       
     294        sdu.src = *lsrc;
     295        sdu.dest = *ldest;
     296       
    289297        do {
     298                /* Encode one fragment */
    290299                size_t roffs;
    291                
    292                 /* Encode one fragment */
    293300                rc = inet_pdu_encode(&packet, offs, ilink->def_mtu, &sdu.data,
    294301                    &sdu.size, &roffs);
Note: See TracChangeset for help on using the changeset viewer.