On 11/03/2015 06:48 PM, Justin Pettit wrote:
> Signed-off-by: Justin Pettit <jpet...@nicira.com>
> ---
>  ovn/northd/ovn-northd.8.xml |    5 +----
>  ovn/northd/ovn-northd.c     |   23 ++++++++++++++++++++---
>  2 files changed, 21 insertions(+), 7 deletions(-)
> 
> diff --git a/ovn/northd/ovn-northd.8.xml b/ovn/northd/ovn-northd.8.xml
> index 6f0a420..e7dec72 100644
> --- a/ovn/northd/ovn-northd.8.xml
> +++ b/ovn/northd/ovn-northd.8.xml
> @@ -340,6 +340,7 @@ ip4.dst = ip4.src;
>  ip4.src = <var>S</var>;
>  ip.ttl = 255;
>  icmp4.type = 0;
> +inport = \"\"; /* Allow sending out inport. */
>  next;
>          </pre>
>  
> @@ -348,10 +349,6 @@ next;
>            each individual <code>inport</code>, and use the same actions in
>            which <var>S</var> is a function of <code>inport</code>.
>          </p>
> -
> -        <p>
> -          Not yet implemented.
> -        </p>
>        </li>
>  
>        <li>
> diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
> index 9996584..8fe0c2c 100644
> --- a/ovn/northd/ovn-northd.c
> +++ b/ovn/northd/ovn-northd.c
> @@ -1295,8 +1295,6 @@ build_lrouter_flows(struct hmap *datapaths, struct hmap 
> *ports,
>      /* This flow table structure is documented in ovn-northd(8), so please
>       * update ovn-northd.8.xml if you change anything. */
>  
> -    /* XXX ICMP echo reply */
> -
>      /* Logical router ingress table 0: Admission control framework. */
>      struct ovn_datapath *od;
>      HMAP_FOR_EACH (od, key_node, datapaths) {
> @@ -1384,12 +1382,31 @@ build_lrouter_flows(struct hmap *datapaths, struct 
> hmap *ports,
>                        match, "drop;");
>          free(match);
>  
> +        /* ICMP echo reply.  These flows reply to ICMP echo requests
> +         * received for the router's IP address. */
> +        match = xasprintf(
> +            "inport == %s && (ip4.dst == "IP_FMT" || ip4.dst == "IP_FMT") && 
> "

You've got a duplicate condition here, checking ip4.dst == IP_FMT twice.

> +            "icmp4.type == 8 && icmp4.code == 0",
> +            op->json_key, IP_ARGS(op->ip), IP_ARGS(op->bcast));
> +        char *actions = xasprintf(
> +            "ip4.dst = ip4.src; "
> +            "ip4.src = "IP_FMT"; "
> +            "ip.ttl = 255; "
> +            "icmp4.type = 0; "
> +            "inport = \"\"; /* Allow sending out inport. */ "
> +            "next; ",
> +            IP_ARGS(op->ip));
> +        ovn_lflow_add(lflows, op->od, S_ROUTER_IN_IP_INPUT, 90,
> +                      match, actions);
> +        free(match);
> +        free(actions);
> +
>          /* ARP reply.  These flows reply to ARP requests for the router's own
>           * IP address. */
>          match = xasprintf(
>              "inport == %s && arp.tpa == "IP_FMT" && arp.op == 1",
>              op->json_key, IP_ARGS(op->ip));
> -        char *actions = xasprintf(
> +        actions = xasprintf(
>              "eth.dst = eth.src; "
>              "eth.src = "ETH_ADDR_FMT"; "
>              "arp.op = 2; /* ARP reply */ "
> 


-- 
Russell Bryant
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to