Changeset a2e3ee6 in mainline for uspace/srv/net/ethip
- Timestamp:
- 2013-06-20T16:45:58Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 08bb73b
- Parents:
- 19a4f73
- Location:
- uspace/srv/net/ethip
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/ethip/arp.c
r19a4f73 ra2e3ee6 66 66 67 67 log_msg(LOG_DEFAULT, LVL_DEBUG, "ARP PDU decoded, opcode=%d, tpa=%x", 68 packet.opcode, packet.target_proto_addr .ipv4);68 packet.opcode, packet.target_proto_addr); 69 69 70 laddr = ethip_nic_addr_find(nic, &packet.target_proto_addr);70 laddr = ethip_nic_addr_find(nic, packet.target_proto_addr); 71 71 if (laddr != NULL) { 72 72 log_msg(LOG_DEFAULT, LVL_DEBUG, "Request/reply to my address"); 73 73 74 (void) atrans_add( &packet.sender_proto_addr,74 (void) atrans_add(packet.sender_proto_addr, 75 75 &packet.sender_hw_addr); 76 76 … … 87 87 } 88 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)89 int arp_translate(ethip_nic_t *nic, uint32_t src_addr, uint32_t ip_addr, 90 mac48_addr_t *mac_addr) 91 91 { 92 92 int rc; … … 99 99 packet.opcode = aop_request; 100 100 packet.sender_hw_addr = nic->mac_addr; 101 packet.sender_proto_addr = *src_addr;101 packet.sender_proto_addr = src_addr; 102 102 packet.target_hw_addr.addr = MAC48_BROADCAST; 103 packet.target_proto_addr = *ip_addr;103 packet.target_proto_addr = ip_addr; 104 104 105 105 rc = arp_send_packet(nic, &packet); -
uspace/srv/net/ethip/arp.h
r19a4f73 ra2e3ee6 42 42 43 43 extern void arp_received(ethip_nic_t *, eth_frame_t *); 44 extern int arp_translate(ethip_nic_t *, iplink_srv_addr_t *, 45 iplink_srv_addr_t *, mac48_addr_t *); 44 extern int arp_translate(ethip_nic_t *, uint32_t, uint32_t, mac48_addr_t *); 46 45 47 46 #endif -
uspace/srv/net/ethip/atrans.c
r19a4f73 ra2e3ee6 49 49 static FIBRIL_CONDVAR_INITIALIZE(atrans_cv); 50 50 51 static ethip_atrans_t *atrans_find( iplink_srv_addr_t *ip_addr)51 static ethip_atrans_t *atrans_find(uint32_t ip_addr) 52 52 { 53 53 list_foreach(atrans_list, link) { … … 55 55 ethip_atrans_t, atrans_list); 56 56 57 if (atrans->ip_addr .ipv4 == ip_addr->ipv4)57 if (atrans->ip_addr == ip_addr) 58 58 return atrans; 59 59 } … … 62 62 } 63 63 64 int atrans_add( iplink_srv_addr_t *ip_addr, mac48_addr_t *mac_addr)64 int atrans_add(uint32_t ip_addr, mac48_addr_t *mac_addr) 65 65 { 66 66 ethip_atrans_t *atrans; … … 71 71 return ENOMEM; 72 72 73 atrans->ip_addr = *ip_addr;73 atrans->ip_addr = ip_addr; 74 74 atrans->mac_addr = *mac_addr; 75 75 … … 88 88 } 89 89 90 int atrans_remove( iplink_srv_addr_t *ip_addr)90 int atrans_remove(uint32_t ip_addr) 91 91 { 92 92 ethip_atrans_t *atrans; … … 106 106 } 107 107 108 int atrans_lookup( iplink_srv_addr_t *ip_addr, mac48_addr_t *mac_addr)108 int atrans_lookup(uint32_t ip_addr, mac48_addr_t *mac_addr) 109 109 { 110 110 ethip_atrans_t *atrans; -
uspace/srv/net/ethip/atrans.h
r19a4f73 ra2e3ee6 41 41 #include "ethip.h" 42 42 43 extern int atrans_add( iplink_srv_addr_t *, mac48_addr_t *);44 extern int atrans_remove( iplink_srv_addr_t *);45 extern int atrans_lookup( iplink_srv_addr_t *, mac48_addr_t *);43 extern int atrans_add(uint32_t, mac48_addr_t *); 44 extern int atrans_remove(uint32_t); 45 extern int atrans_lookup(uint32_t, mac48_addr_t *); 46 46 extern int atrans_wait_timeout(suseconds_t); 47 47 -
uspace/srv/net/ethip/ethip.c
r19a4f73 ra2e3ee6 57 57 static int ethip_send(iplink_srv_t *srv, iplink_srv_sdu_t *sdu); 58 58 static int ethip_get_mtu(iplink_srv_t *srv, size_t *mtu); 59 static int ethip_addr_add(iplink_srv_t *srv, iplink_srv_addr_t *addr);60 static int ethip_addr_remove(iplink_srv_t *srv, iplink_srv_addr_t *addr);59 static int ethip_addr_add(iplink_srv_t *srv, uint32_t addr); 60 static int ethip_addr_remove(iplink_srv_t *srv, uint32_t addr); 61 61 62 62 static void ethip_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg); … … 175 175 log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_send()"); 176 176 177 rc = arp_translate(nic, &sdu->lsrc, &sdu->ldest, &dest_mac_addr);177 rc = arp_translate(nic, sdu->lsrc, sdu->ldest, &dest_mac_addr); 178 178 if (rc != EOK) { 179 179 log_msg(LOG_DEFAULT, LVL_WARN, "Failed to look up IP address 0x%" PRIx32, 180 sdu->ldest .ipv4);180 sdu->ldest); 181 181 return rc; 182 182 } … … 221 221 case ETYPE_IP: 222 222 log_msg(LOG_DEFAULT, LVL_DEBUG, " - construct SDU"); 223 sdu.lsrc .ipv4= 0;224 sdu.ldest .ipv4= 0;223 sdu.lsrc = 0; 224 sdu.ldest = 0; 225 225 sdu.data = frame.data; 226 226 sdu.size = frame.size; … … 244 244 } 245 245 246 static int ethip_addr_add(iplink_srv_t *srv, iplink_srv_addr_t *addr) 247 { 246 static int ethip_addr_add(iplink_srv_t *srv, uint32_t addr) 247 { 248 log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_add(0x%" PRIx32 ")", addr); 249 250 ethip_nic_t *nic = (ethip_nic_t *) srv->arg; 251 252 return ethip_nic_addr_add(nic, addr); 253 } 254 255 static int ethip_addr_remove(iplink_srv_t *srv, uint32_t addr) 256 { 257 log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_remove(0x%" PRIx32 ")", addr); 258 248 259 ethip_nic_t *nic = (ethip_nic_t *)srv->arg; 249 250 log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_add(0x%" PRIx32 ")", addr->ipv4); 251 return ethip_nic_addr_add(nic, addr); 252 } 253 254 static int ethip_addr_remove(iplink_srv_t *srv, iplink_srv_addr_t *addr) 255 { 256 ethip_nic_t *nic = (ethip_nic_t *)srv->arg; 257 258 log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_remove(0x%" PRIx32 ")", addr->ipv4); 260 259 261 return ethip_nic_addr_add(nic, addr); 260 262 } -
uspace/srv/net/ethip/ethip.h
r19a4f73 ra2e3ee6 48 48 typedef struct { 49 49 link_t addr_list; 50 iplink_srv_addr_t addr;50 uint32_t addr; 51 51 } ethip_link_addr_t; 52 52 … … 104 104 mac48_addr_t sender_hw_addr; 105 105 /** Sender protocol address */ 106 iplink_srv_addr_t sender_proto_addr;106 uint32_t sender_proto_addr; 107 107 /** Target hardware address */ 108 108 mac48_addr_t target_hw_addr; 109 109 /** Target protocol address */ 110 iplink_srv_addr_t target_proto_addr;110 uint32_t target_proto_addr; 111 111 } arp_eth_packet_t; 112 112 … … 114 114 typedef struct { 115 115 link_t atrans_list; 116 iplink_srv_addr_t ip_addr;116 uint32_t ip_addr; 117 117 mac48_addr_t mac_addr; 118 118 } ethip_atrans_t; -
uspace/srv/net/ethip/ethip_nic.c
r19a4f73 ra2e3ee6 121 121 } 122 122 123 static ethip_link_addr_t *ethip_nic_addr_new( iplink_srv_addr_t *addr)123 static ethip_link_addr_t *ethip_nic_addr_new(uint32_t addr) 124 124 { 125 125 ethip_link_addr_t *laddr = calloc(1, sizeof(ethip_link_addr_t)); 126 127 126 if (laddr == NULL) { 128 127 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed allocating NIC address structure. " … … 130 129 return NULL; 131 130 } 132 131 133 132 link_initialize(&laddr->addr_list); 134 laddr->addr.ipv4 = addr->ipv4; 133 laddr->addr = addr; 134 135 135 return laddr; 136 136 } … … 335 335 } 336 336 337 int ethip_nic_addr_add(ethip_nic_t *nic, iplink_srv_addr_t *addr) 338 { 339 ethip_link_addr_t *laddr; 340 337 int ethip_nic_addr_add(ethip_nic_t *nic, uint32_t addr) 338 { 341 339 log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_nic_addr_add()"); 342 laddr = ethip_nic_addr_new(addr); 340 341 ethip_link_addr_t *laddr = ethip_nic_addr_new(addr); 343 342 if (laddr == NULL) 344 343 return ENOMEM; 345 344 346 345 list_append(&laddr->addr_list, &nic->addr_list); 347 346 return EOK; 348 347 } 349 348 350 int ethip_nic_addr_remove(ethip_nic_t *nic, iplink_srv_addr_t *addr) 351 { 352 ethip_link_addr_t *laddr; 353 349 int ethip_nic_addr_remove(ethip_nic_t *nic, uint32_t addr) 350 { 354 351 log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_nic_addr_remove()"); 355 356 laddr = ethip_nic_addr_find(nic, addr);352 353 ethip_link_addr_t *laddr = ethip_nic_addr_find(nic, addr); 357 354 if (laddr == NULL) 358 355 return ENOENT; 359 356 360 357 list_remove(&laddr->addr_list); 361 358 ethip_link_addr_delete(laddr); … … 364 361 365 362 ethip_link_addr_t *ethip_nic_addr_find(ethip_nic_t *nic, 366 iplink_srv_addr_t *addr)363 uint32_t addr) 367 364 { 368 365 log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_nic_addr_find()"); … … 372 369 ethip_link_addr_t, addr_list); 373 370 374 if (addr ->ipv4 == laddr->addr.ipv4)371 if (addr == laddr->addr) 375 372 return laddr; 376 373 } -
uspace/srv/net/ethip/ethip_nic.h
r19a4f73 ra2e3ee6 44 44 extern ethip_nic_t *ethip_nic_find_by_iplink_sid(service_id_t); 45 45 extern int ethip_nic_send(ethip_nic_t *, void *, size_t); 46 extern int ethip_nic_addr_add(ethip_nic_t *, iplink_srv_addr_t *); 47 extern int ethip_nic_addr_remove(ethip_nic_t *, iplink_srv_addr_t *); 48 extern ethip_link_addr_t *ethip_nic_addr_find(ethip_nic_t *, 49 iplink_srv_addr_t *); 46 extern int ethip_nic_addr_add(ethip_nic_t *, uint32_t); 47 extern int ethip_nic_addr_remove(ethip_nic_t *, uint32_t); 48 extern ethip_link_addr_t *ethip_nic_addr_find(ethip_nic_t *, uint32_t); 50 49 51 50 #endif -
uspace/srv/net/ethip/pdu.c
r19a4f73 ra2e3ee6 170 170 mac48_encode(&packet->sender_hw_addr, pfmt->sender_hw_addr); 171 171 pfmt->sender_proto_addr = 172 host2uint32_t_be(packet->sender_proto_addr .ipv4);172 host2uint32_t_be(packet->sender_proto_addr); 173 173 mac48_encode(&packet->target_hw_addr, pfmt->target_hw_addr); 174 174 pfmt->target_proto_addr = 175 host2uint32_t_be(packet->target_proto_addr .ipv4);175 host2uint32_t_be(packet->target_proto_addr); 176 176 177 177 *rdata = data; … … 228 228 229 229 mac48_decode(pfmt->sender_hw_addr, &packet->sender_hw_addr); 230 packet->sender_proto_addr .ipv4=230 packet->sender_proto_addr = 231 231 uint32_t_be2host(pfmt->sender_proto_addr); 232 232 mac48_decode(pfmt->target_hw_addr, &packet->target_hw_addr); 233 packet->target_proto_addr .ipv4=233 packet->target_proto_addr = 234 234 uint32_t_be2host(pfmt->target_proto_addr); 235 235 log_msg(LOG_DEFAULT, LVL_DEBUG, "packet->tpa = %x\n", pfmt->target_proto_addr); … … 238 238 } 239 239 240 241 240 /** @} 242 241 */
Note:
See TracChangeset
for help on using the changeset viewer.