Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/udp/pdu.c

    r8d48c7e rf023251  
    11/*
    2  * Copyright (c) 2015 Jiri Svoboda
     2 * Copyright (c) 2012 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4141#include <stdlib.h>
    4242#include <inet/addr.h>
     43#include <net/socket_codes.h>
    4344#include "msg.h"
    4445#include "pdu.h"
     
    162163
    163164/** Decode incoming PDU */
    164 int udp_pdu_decode(udp_pdu_t *pdu, inet_ep2_t *epp, udp_msg_t **msg)
     165int udp_pdu_decode(udp_pdu_t *pdu, udp_sockpair_t *sp, udp_msg_t **msg)
    165166{
    166167        udp_msg_t *nmsg;
     
    179180        hdr = (udp_header_t *)pdu->data;
    180181
    181         epp->local_link = pdu->iplink;
    182         epp->remote.port = uint16_t_be2host(hdr->src_port);
    183         epp->remote.addr = pdu->src;
    184         epp->local.port = uint16_t_be2host(hdr->dest_port);
    185         epp->local.addr = pdu->dest;
     182        sp->foreign.port = uint16_t_be2host(hdr->src_port);
     183        sp->foreign.addr = pdu->src;
     184        sp->local.port = uint16_t_be2host(hdr->dest_port);
     185        sp->local.addr = pdu->dest;
    186186
    187187        length = uint16_t_be2host(hdr->length);
     
    197197                return ENOMEM;
    198198
     199        nmsg->data = text;
    199200        nmsg->data_size = length - sizeof(udp_header_t);
    200         nmsg->data = malloc(nmsg->data_size);
    201         if (nmsg->data == NULL)
    202                 return ENOMEM;
    203 
    204         memcpy(nmsg->data, text, nmsg->data_size);
    205201
    206202        *msg = nmsg;
     
    209205
    210206/** Encode outgoing PDU */
    211 int udp_pdu_encode(inet_ep2_t *epp, udp_msg_t *msg, udp_pdu_t **pdu)
     207int udp_pdu_encode(udp_sockpair_t *sp, udp_msg_t *msg, udp_pdu_t **pdu)
    212208{
    213209        udp_pdu_t *npdu;
     
    219215                return ENOMEM;
    220216
    221         npdu->iplink = epp->local_link;
    222         npdu->src = epp->local.addr;
    223         npdu->dest = epp->remote.addr;
     217        npdu->iplink = sp->iplink;
     218        npdu->src = sp->local.addr;
     219        npdu->dest = sp->foreign.addr;
    224220
    225221        npdu->data_size = sizeof(udp_header_t) + msg->data_size;
     
    231227
    232228        hdr = (udp_header_t *)npdu->data;
    233         hdr->src_port = host2uint16_t_be(epp->local.port);
    234         hdr->dest_port = host2uint16_t_be(epp->remote.port);
     229        hdr->src_port = host2uint16_t_be(sp->local.port);
     230        hdr->dest_port = host2uint16_t_be(sp->foreign.port);
    235231        hdr->length = host2uint16_t_be(npdu->data_size);
    236232        hdr->checksum = 0;
Note: See TracChangeset for help on using the changeset viewer.