Hi Ben,

With reference to global variable "egress_table_id", I have a doubt. I can
send '0' as the default value from ofp_print_flow_mod() to
ofpact_check__(). Right now, ofpact_check__() access the first egress table
id from global variable "egress_table_id", if I remove the global variable
then egress table id has to sent be from the all the functions that
internally call ofpact_check__(). For example,

ofctl_add_flow()->ofctl_flow_mod()->parse_ofp_flow_mod_str()->parse_ofp_str()->parse_ofp_str__()->ofpacts_check()->ofpact_check__()

In this hierarchy, first I have to get the first egress table from the
switch using fetch_table_features() and egress table id has to be sent from
ofctl_add_flow() and I need to change the definition of all the functions
to include one more parameter to send the first egress table id to
ofpact_check__().

Functions that modify the flows needs to first query the first egress table
from the switch and send it to ofpact_check__ and functions that only parse
flows for e.g ofctl_parse_flows() can send the default value i.e., but
definition of all the functions included in the hierarchy has to be changed
to include one more parameter. It requires changing the definition of many
functions.

That is why I have used the global variable. Please suggest which approach
should be followed.

Thanks
Niti Rohilla

On Wed, Jan 13, 2016 at 10:46 PM, Ben Pfaff <b...@ovn.org> wrote:

> On Wed, Jan 13, 2016 at 03:18:02PM +0530, niti Rohilla wrote:
> > I can incorporate the egress table implemenation in OF1.3 table features
> > code and will remove the implementation added for OF1.5.
>
> Good.
>
> > I will replace the pad[5] field in of13_table_features structure with
> > command and features field as specified in OF1.5.1 specifications. I can
> > also remove the ofp15_table_feature_prop_type enums, OF1.5 protocol
> > definition and code implementation added for the same. Kindly suggest is
> > this approach is fine.
>
> OK.
>
> > I can replace the hard coded values for OFPAT_ with OFPACT_OUTPUT and
> > OFPACT_GROUP.
>
> OK.
>
> > I have created a global variable "egress_table_id" that contain the table
> > id of first egress table. This variable is declared as global because I
> > need the first egress table id to add the checks in ofp-action.c file (in
> > ofpact_check__()) to prevent adding the output and group action in action
> > set of egress tables and to disallow the ingress flow tables to direct
> the
> > packet to egress flow tables via GOTO_TABLE instruction.
> >
> > We need access to the ofproto structure in ofpact_check__().
> > ofpact_check__() is called from various places. One scenraio is,
> > ofp_print_flow_mod() -> ofputil_decode_flow_mod() ->
> > ofpacts_check_consistency() -> ofpacts_check() -> ofpact_check__(). We
> > don't have access to ofproto strcuture in ofp_print_flow_mod(). Please
> > suggest if there is any other possible way through which I can get the
> > first egress table id (stored in ofproto strcuture) in ofp-actions.c
> file.
>
> ofp_print_flow_mod() doesn't need to know the real egress_table_id, so
> you can use some default that will accept all flows.
>
> > I want to clarify one more doubt. In the 2nd patch, when a packet start
> > egress processing then output port is added to the action_set and we
> should
> > also set the actset_output variable. So can we directly add the output
> port
> > in action_set and actset_output or we should call xlate_write_action() to
> > add the output port in action_set and actset_output variable. Please
> > suggest which approach should be followed for this.
>
> I would add it directly.
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to