[ovs-dev] [PATCH ovn 05/11] ofproto-dpif-xlate: Add native tunnel information to ofproto/trace.
Alex Wang
alexw at nicira.com
Mon Jun 15 17:49:29 UTC 2015
Acked-by: Alex Wang <alexw at nicira.com>
On Sun, Jun 14, 2015 at 12:18 PM, Ben Pfaff <blp at nicira.com> wrote:
> I found this invaluable for debugging native tunnels over dummy devices.
>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
> ofproto/ofproto-dpif-xlate.c | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
> index 481e9ea..7ccaaea 100644
> --- a/ofproto/ofproto-dpif-xlate.c
> +++ b/ofproto/ofproto-dpif-xlate.c
> @@ -2672,7 +2672,7 @@ tnl_send_arp_request(const struct xport *out_dev,
> const uint8_t eth_src[ETH_ADDR
> }
>
> static int
> -build_tunnel_send(const struct xlate_ctx *ctx, const struct xport *xport,
> +build_tunnel_send(struct xlate_ctx *ctx, const struct xport *xport,
> const struct flow *flow, odp_port_t tunnel_odp_port)
> {
> struct ovs_action_push_tnl tnl_push_data;
> @@ -2684,22 +2684,30 @@ build_tunnel_send(const struct xlate_ctx *ctx,
> const struct xport *xport,
>
> err = tnl_route_lookup_flow(flow, &d_ip, &out_dev);
> if (err) {
> + xlate_report(ctx, "native tunnel routing failed");
> return err;
> }
> + xlate_report(ctx, "tunneling to "IP_FMT" via %s",
> + IP_ARGS(d_ip), netdev_get_name(out_dev->netdev));
>
> /* Use mac addr of bridge port of the peer. */
> err = netdev_get_etheraddr(out_dev->netdev, smac);
> if (err) {
> + xlate_report(ctx, "tunnel output device lacks Ethernet address");
> return err;
> }
>
> err = netdev_get_in4(out_dev->netdev, (struct in_addr *) &s_ip, NULL);
> if (err) {
> + xlate_report(ctx, "tunnel output device lacks IPv4 address");
> return err;
> }
>
> err = tnl_arp_lookup(out_dev->xbridge->name, d_ip, dmac);
> if (err) {
> + xlate_report(ctx, "ARP cache miss for "IP_FMT" on bridge %s, "
> + "sending ARP request",
> + IP_ARGS(d_ip), out_dev->xbridge->name);
> tnl_send_arp_request(out_dev, smac, s_ip, d_ip);
> return err;
> }
> @@ -2711,6 +2719,11 @@ build_tunnel_send(const struct xlate_ctx *ctx,
> const struct xport *xport,
> sizeof entry->u.tnl_arp_cache.br_name);
> entry->u.tnl_arp_cache.d_ip = d_ip;
> }
> +
> + xlate_report(ctx, "tunneling from "ETH_ADDR_FMT" "IP_FMT
> + " to "ETH_ADDR_FMT" "IP_FMT,
> + ETH_ADDR_ARGS(smac), IP_ARGS(s_ip),
> + ETH_ADDR_ARGS(dmac), IP_ARGS(d_ip));
> err = tnl_port_build_header(xport->ofport, flow,
> dmac, smac, s_ip, &tnl_push_data);
> if (err) {
> @@ -2920,8 +2933,10 @@ compose_output_action__(struct xlate_ctx *ctx,
> ofp_port_t ofp_port,
> }
> out_port = odp_port;
> if (ovs_native_tunneling_is_on(ctx->xbridge->ofproto)) {
> + xlate_report(ctx, "output to native tunnel");
> tnl_push_pop_send = true;
> } else {
> + xlate_report(ctx, "output to kernel tunnel");
> commit_odp_tunnel_action(flow, &ctx->base_flow,
> ctx->xout->odp_actions);
> flow->tunnel = flow_tnl; /* Restore tunnel metadata */
> --
> 2.1.3
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
More information about the dev
mailing list