Changeset 3d016ac in mainline for uspace/srv/ethip/arp.c
- Timestamp:
- 2012-03-07T18:54:08Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0e25780
- Parents:
- f9d3dd4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/ethip/arp.c
rf9d3dd4 r3d016ac 47 47 #include "std.h" 48 48 49 /** Time to wait for ARP reply in microseconds */ 50 #define ARP_REQUEST_TIMEOUT (3 * 1000 * 1000) 51 49 52 static int arp_send_packet(ethip_nic_t *nic, arp_eth_packet_t *packet); 50 53 … … 64 67 log_msg(LVL_DEBUG, "ARP PDU decoded, opcode=%d, tpa=%x", 65 68 packet.opcode, packet.target_proto_addr.ipv4); 66 if (packet.opcode == aop_request) {67 log_msg(LVL_DEBUG, "ARP request");68 69 69 70 71 log_msg(LVL_DEBUG, "Request onmy address");70 laddr = ethip_nic_addr_find(nic, &packet.target_proto_addr); 71 if (laddr != NULL) { 72 log_msg(LVL_DEBUG, "Request/reply to my address"); 72 73 73 74 74 (void) atrans_add(&packet.sender_proto_addr, 75 &packet.sender_hw_addr); 75 76 76 reply.opcode = aop_reply; 77 reply.sender_hw_addr = nic->mac_addr; 77 if (packet.opcode == aop_request) { 78 reply.opcode = aop_reply; 79 reply.sender_hw_addr = nic->mac_addr; 78 80 reply.sender_proto_addr = laddr->addr; 79 81 reply.target_hw_addr = packet.sender_hw_addr; … … 83 85 } 84 86 } 87 } 88 89 int arp_translate(ethip_nic_t *nic, iplink_srv_addr_t *src_addr, 90 iplink_srv_addr_t *ip_addr, mac48_addr_t *mac_addr) 91 { 92 int rc; 93 arp_eth_packet_t packet; 94 95 rc = atrans_lookup(ip_addr, mac_addr); 96 if (rc == EOK) 97 return EOK; 98 99 packet.opcode = aop_request; 100 packet.sender_hw_addr = nic->mac_addr; 101 packet.sender_proto_addr = *src_addr; 102 packet.target_hw_addr.addr = MAC48_BROADCAST; 103 packet.target_proto_addr = *ip_addr; 104 105 rc = arp_send_packet(nic, &packet); 106 if (rc != EOK) 107 return rc; 108 109 (void) atrans_wait_timeout(ARP_REQUEST_TIMEOUT); 110 111 return atrans_lookup(ip_addr, mac_addr); 85 112 } 86 113
Note:
See TracChangeset
for help on using the changeset viewer.