Open kheradmand opened 6 years ago
Minimal example please?
Everett H.
On Thu, Sep 14, 2017 at 11:55:21PM +0000, Ali Kheradmand wrote:
Hi I have the following configuration
@val ( 0 , 14 , false ) ~> @deref ( sel_profile , 0 ) ~> @setCrntRule ( . ) ~> @setCrntTable ( . ) ~> .HitMissCases ~> .ControlStatements ~> @egress ~> @txenPacket ~> @nextPacket %standard_metadata_t .Map ingress_port : 32 ( .FieldMods ) ; ( egress_spec : 32 ( .FieldMods ) ; .FieldDecs ) data_t "$fixed_width" |-> 40 f1 : 32 ( .FieldMods ) ; ( b1 : 8 ( .FieldMods ) ; .FieldDecs ) sel_fields ( data . f1 ) ; .FieldListEntryItems sel_hash ListItem ( sel_fields ) crc16 14 0 .CalcFieldCellBag true true adata> %standard_metadata_t standard_metadata ingress_port |-> @val ( 1 , 32 , false ) egress_spec |-> @undef true false data_t data b1 |-> @val ( 0 , 8 , false ) f1 |-> @val ( 1 , 32 , false ) start ( extract ( data ) ; .ExtractOrSetStatements ) return ingress ;.StatefulCellBag .Map setf1 val , .ParamList modify_field ( ( data . f1 ) , ( val , .Args ) ) ; .ActionStatementsnoop .ParamList .ActionStatementssel_profile actions { noop ; ( setf1 ; .ActionNa> meItems ) } "$size" |-> 16384 "$selector" |-> sel 0 |-> ( ListItem ( @call ( setf1 , $resolved ( ListItem ( @val ( 10 , 0 , false ) ) ) ) ) ListItem ( @call ( setf1 , $resolved ( ListItem ( @val ( 20 , 0 , false ) ) ) ) ) ) sel sel_hash
test1 ( data . b1 ) : exact ; .FieldMatchs action_profile : sel_profile ; size : 1024 ; .TableOptionals ListItem ( $rule ( 0 , $ctr ( ListItem ( @val ( 0 , 0 , false ) ) ) , @apref ( 0 ) ) ) ingress apply ( test1 ) { .HitMissCases } .ControlStatementsSetItem ( ingress ) .Set .List test1 0> ListItem ( @val ( 1 , 32 , false ) ) ListItem ( @val ( 0 , 8 , false ) ) .List SetItem ( data ) ListItem ( data ) 2 data . @val ( 5 , 0 , false ) .List .List note the
part and specially sel_profile actions { noop ; ( setf1 ; .ActionNameItems ) } "$size" |-> 16384 "$selector" |-> sel 0 |-> ( ListItem ( @call ( setf1 , $resolved ( ListItem ( @val ( 10 , 0 , false ) ) ) ) ) ListItem ( @call ( setf1 , $resolved ( ListItem ( @val ( 20 , 0 , false ) ) ) ) ) ) 0 |-> ( ListItem ( @call ( setf1 , $resolved ( ListItem ( @val ( 10 , 0 , false ) ) ) ) ) ListItem ( @call ( setf1 , $resolved ( ListItem ( @val ( 20 , 0 , false ) ) ) ) ) ) Now I have the following rule rule@val(I:Int,_,false) ~> @deref(P:ActionProfileName , Id:Int) => G[0] ... ... P (Id |-> G:List) _:Map "$selector" |-> S:SelectorName _:Map ...The result of that is: ... S FLC:FieldListCalculationName ...Suggesting that G[0] has been evaluated into ListItem ( @call ( setf1 , $resolved ( ListItem ( @val ( 20 , 0 , false ) ) ) ) ) rather than @call ( setf1 , $resolved ( ListItem ( @val ( 20 , 0 , false ) ) ) ) — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.* ListItem ( @call ( setf1 , $resolved ( ListItem ( @val ( 20 , 0 , false ) ) ) ) ) ~> @setCrntRule ( . ) ~> @setCrntTable ( . ) ~> .HitMissCases ~> .ControlStatements ~> @egress ~> @txenPacket ~> @nextPacket %standard_metadata_t .Map ingress_port : 32 ( .FieldMods ) ; ( egress_spec : 32 ( .FieldMods ) ; .FieldDecs ) data_t "$fixed_width" |-> 40 f1 : 32 ( .FieldMods ) ; ( b1 : 8 ( .FieldMods ) ; .FieldDecs ) sel_fields ( data . f1 ) ; .FieldListEntryItems sel_hash ListItem ( sel_fields ) crc16 14 0 .CalcFieldCellBag true > valid> true %standard_metadata_t standard_metadata ingress_port |-> @val ( 1 , 32 , false ) egress_spec |-> @undef true false data_t data b1 |-> @val ( 0 , 8 , false ) f1 |-> @val ( 1 , 32 , false ) start ( extract ( data ) ; .ExtractOrSetStatements ) return ingress ;.StatefulCellBag .Map setf1 val , .ParamList modify_field ( ( data . f1 ) , ( val , .Args ) ) ; .ActionStatementsnoop .ParamList .ActionStatementssel_profile actions { > noop ; ( setf1 ; .ActionNameItems ) } "$size" |-> 16384 "$selector" |-> sel 0 |-> ( ListItem ( @call ( setf1 , $resolved ( ListItem ( @val ( 10 , 0 , false ) ) ) ) ) ListItem ( @call ( setf1 , $resolved ( ListItem ( @val ( 20 , 0 , false ) ) ) ) ) ) sel sel_hash
test1 ( data . b1 ) : exact ; .FieldMatchs action_profile : sel_profile ; size : 1024 ; .TableOptionals ListItem ( $rule ( 0 , $ctr ( ListItem ( @val ( 0 , 0 , false ) ) ) , @apref ( 0 ) ) ) ingress apply ( test1 ) { .HitMissCases } .ControlStatementsSetItem ( ingress ) .Set .List tes> t1 0 ListItem ( @val ( 1 , 32 , false ) ) ListItem ( @val ( 0 , 8 , false ) ) .List SetItem ( data ) ListItem ( data ) 2 data . @val ( 5 , 0 , false ) .List .List
I will try to craft a minimal example. The problem is that the issue does not manifest in small examples that I tried so far.
Hi I have the following configuration
note the
part and specially
Now I have the following rule
The result of that is:
Suggesting that
G[0]
has been evaluated intoListItem ( @call ( setf1 , $resolved ( ListItem ( @val ( 20 , 0 , false ) ) ) ) )
rather than@call ( setf1 , $resolved ( ListItem ( @val ( 20 , 0 , false ) ) ) )