Changeset ceba4bed in mainline for uspace/srv/inet/inet_link.c


Ignore:
Timestamp:
2012-02-06T17:38:50Z (14 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e767dbf
Parents:
bc38578
Message:

Introduce address object. Sketch sending outgoing datagrams to directly
reachable destinations.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/inet/inet_link.c

    rbc38578 rceba4bed  
    4343#include <stdlib.h>
    4444
     45#include "addrobj.h"
     46#include "inet.h"
    4547#include "inet_link.h"
     48#include "pdu.h"
    4649
    4750static int inet_link_open(service_id_t sid);
    4851static int inet_iplink_recv(iplink_t *ilink, iplink_sdu_t *sdu);
    49 
    50 typedef struct {
    51         link_t link_list;
    52         service_id_t svc_id;
    53         char *svc_name;
    54         async_sess_t *sess;
    55         iplink_t *iplink;
    56 } inet_link_t;
    5752
    5853static iplink_ev_ops_t inet_iplink_ev_ops = {
     
    172167        list_append(&ilink->link_list, &inet_link_list);
    173168
     169        inet_addrobj_t *addr;
     170
     171        /* XXX For testing: set static IP address 192.168.0.4/24 */
     172        addr = inet_addrobj_new();
     173        addr->naddr.ipv4 = (192 << 24) + (168 << 16) + (0 << 8) + 4;
     174        addr->naddr.bits = 24;
     175        addr->ilink = ilink;
     176        inet_addrobj_add(addr);
     177
    174178        return EOK;
    175179
     
    198202}
    199203
     204/** Send datagram over Internet link */
     205int inet_link_send_dgram(inet_link_t *ilink, inet_addr_t *lsrc,
     206    inet_addr_t *ldest, inet_dgram_t *dgram, uint8_t ttl, int df)
     207{
     208        iplink_sdu_t sdu;
     209        int rc;
     210
     211        sdu.lsrc.ipv4 = lsrc->ipv4;
     212        sdu.ldest.ipv4 = ldest->ipv4;
     213        rc = inet_pdu_encode(dgram, &sdu.data, &sdu.size);
     214        if (rc != EOK)
     215                return rc;
     216
     217        rc = iplink_send(ilink->iplink, &sdu);
     218        free(sdu.data);
     219
     220        return rc;
     221}
     222
     223
    200224/** @}
    201225 */
Note: See TracChangeset for help on using the changeset viewer.