Changeset 962f03b in mainline for uspace/srv/ethip/arp.c


Ignore:
Timestamp:
2012-02-27T19:32:15Z (13 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
56792a2
Parents:
87e5658c
Message:

IP links need to be made aware of configured IP addresses.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/ethip/arp.c

    r87e5658c r962f03b  
    4646#include "std.h"
    4747
    48 #define MY_IPV4_ADDR ( (192 << 24) | (168 << 16) | (0 << 8) | 4U )
    4948#define MY_ETH_ADDR 0xaafeedfaceee
    5049
     
    5655        arp_eth_packet_t packet;
    5756        arp_eth_packet_t reply;
     57        ethip_link_addr_t *laddr;
    5858
    5959        log_msg(LVL_DEBUG, "arp_received()");
     
    6565        log_msg(LVL_DEBUG, "ARP PDU decoded, opcode=%d, tpa=%x",
    6666            packet.opcode, packet.target_proto_addr.ipv4);
    67         if (packet.opcode == aop_request &&
    68             packet.target_proto_addr.ipv4 == MY_IPV4_ADDR) {
    69                 log_msg(LVL_DEBUG, "Request on my address");
     67        if (packet.opcode == aop_request) {
     68                log_msg(LVL_DEBUG, "ARP request");
    7069
    71                 reply.opcode = aop_reply;
    72                 reply.sender_hw_addr.addr = MY_ETH_ADDR;
    73                 reply.sender_proto_addr.ipv4 = MY_IPV4_ADDR;
    74                 reply.target_hw_addr = packet.sender_hw_addr;
    75                 reply.target_proto_addr = packet.sender_proto_addr;
     70                laddr = ethip_nic_addr_find(nic, &packet.target_proto_addr);
     71                if (laddr != NULL) {
     72                        log_msg(LVL_DEBUG, "Request on my address");
    7673
    77                 arp_send_packet(nic, &reply);
     74                        reply.opcode = aop_reply;
     75                        reply.sender_hw_addr.addr = MY_ETH_ADDR;
     76                        reply.sender_proto_addr = laddr->addr;
     77                        reply.target_hw_addr = packet.sender_hw_addr;
     78                        reply.target_proto_addr = packet.sender_proto_addr;
     79
     80                        arp_send_packet(nic, &reply);
     81                }
    7882        }
    7983}
Note: See TracChangeset for help on using the changeset viewer.