due cose:
-quando inizializzi un vettore con {valore1,valore2..} non sono sicuro che tu possa mettere come valore una variabile o una funzione..e poi,cos'è la variabile id?
-la dimensione del tuo vettore packet moolto probabilmente viene calcolata a run time..quindi il tuo compilatore deve permettere la decisione della dimensione dell'array statico a RUN-TIME(e non a compile time)..questa possibilità è stata introdotta da c99,ma dipende se il compilatore lo supporta..