Skip to content

Commit

Permalink
netdev-dummy: Implement ARP responder.
Browse files Browse the repository at this point in the history
This is the only missing piece to make native tunneling work with dummy
devices for testing purposes.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alex Wang <alexw@nicira.com>
  • Loading branch information
blp committed Jun 16, 2015
1 parent eb0b295 commit bde96a9
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions lib/netdev-dummy.c
Expand Up @@ -932,6 +932,23 @@ netdev_dummy_send(struct netdev *netdev, int qid OVS_UNUSED,

dummy_packet_conn_send(&dev->conn, buffer, size);

/* Reply to ARP requests for 'dev''s assigned IP address. */
if (dev->address.s_addr) {
struct dp_packet packet;
struct flow flow;

dp_packet_use_const(&packet, buffer, size);
flow_extract(&packet, &flow);
if (flow.dl_type == htons(ETH_TYPE_ARP)
&& flow.nw_proto == ARP_OP_REQUEST
&& flow.nw_dst == dev->address.s_addr) {
struct dp_packet *reply = dp_packet_new(0);
compose_arp(reply, ARP_OP_REPLY, dev->hwaddr, flow.dl_src,
false, flow.nw_dst, flow.nw_src);
netdev_dummy_queue_packet(dev, reply);
}
}

if (dev->tx_pcap) {
struct dp_packet packet;

Expand Down

0 comments on commit bde96a9

Please sign in to comment.