[P4] modify_field

Dániel Horpácsi daniel-h at elte.hu
Thu Sep 24 17:46:17 CEST 2015


action.c:

//::    elif arg[0]=="immediate":
//::        arg_str = "(uint8_t[]) {"
//::        for byte in arg[1]:
//::            arg_str += hex(byte) + ", "
//::        #endfor
//::        arg_str = arg_str[0:-2] + "}"
//::        return arg_str

smart.py:

if type(arg) is int or type(arg) is long:
     # assert(width > 0)
     tmp = arg
     nbytes = 0
     while tmp > 0:
         nbytes += 1
         tmp /= 256
     width = max(4, nbytes)
     type_ = "immediate"
     value = int_to_byte_array(arg, width)

def int_to_byte_array(val, num_bytes):
     res = []
     for i in xrange(num_bytes):
         res.append(int(val % 256))
         val /= 256
     res.reverse()
     return res

On 2015-09-24 16:37, Dániel Horpácsi wrote:
> Szia!
>
> Valoszinuleg erdemes ranezni az eredeti behav. modelben az actions.c, 
> primitives.h es primitives_arith.h template fajlokra, vagyis a 
> 'referenciaimplementaciora'. Nyilvan ezek nem feltetlenul lesznek a 
> legjobbak a Spider implementaciohoz, de a DPDK eseteben akar elvi 
> valtoztatas nelkul is atvehetoek, persze nemi refaktoralassal.
>
> Dani
>
> On 2015-09-24 16:06, Leskó Dániel wrote:
>> Sziasztok!
>>
>>  Meetingen szóba került, hogy a modify_field-ből kellene egy 
>> konstansos változat is, de tudjuk a típusát annak a konstansak amit 
>> be akarunk másolni? (gondolom nem akarunk az összes típus szerinti 
>> függvényszignatúrát legyártani)
>>
>>  A specifikáció szerint egyébként a value lehet egy konstans, egy 
>> table action paramétere (itt ilyenkor csak a paraméter neve 
>> szerepel), egy referencia másik fieldre, egy referencia regiszterre.
>>
>>  Ezen túl van egy opcionális mask, ami állítja, hogy melyik bitek 
>> íródjanak felül és melyikek ne (ez szerencsére pszeudokóddal is le 
>> van írva)
>>
>>  Megengedett az is, hogy a módosítandó field és az új érték mérete 
>> különbözzön. Ilyenkor levágni vagy nyújtani kell az új értéket.
>>
>> Hát papíron ennyi mindent kellene tudnia a modify_fieldnek, de 
>> jelenleg csak egy memcpy a megvalósítása és nem is nagyon látom, hogy 
>> a fentiek mindegyikét hogyan lehetne belepréselni. Akinek van ötlete 
>> ne tartsa vissza.
>>
>> Dani
>> _______________________________________________
>> P4 mailing list
>> P4 at plc.inf.elte.hu
>> https://plc.inf.elte.hu/mailman/listinfo/p4
>
> _______________________________________________
> P4 mailing list
> P4 at plc.inf.elte.hu
> https://plc.inf.elte.hu/mailman/listinfo/p4



More information about the P4 mailing list