Diff for /embedaddon/bird/filter/f-util.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2017/08/22 12:33:54 version 1.1.1.2, 2021/03/17 19:50:23
Line 2 Line 2
  *      Filters: utility functions   *      Filters: utility functions
  *   *
  *      Copyright 1998 Pavel Machek <pavel@ucw.cz>   *      Copyright 1998 Pavel Machek <pavel@ucw.cz>
    *                2017 Jan Maria Matejka <mq@ucw.cz>
  *   *
  *      Can be freely distributed and used under the terms of the GNU GPL.   *      Can be freely distributed and used under the terms of the GNU GPL.
  */   */
Line 13 Line 14
 #define P(a,b) ((a<<8) | b)  #define P(a,b) ((a<<8) | b)
   
 struct f_inst *  struct f_inst *
f_new_inst(void)f_new_inst(enum f_instruction_code fi_code)
 {  {
   struct f_inst * ret;    struct f_inst * ret;
  ret = cfg_alloc(sizeof(struct f_inst));  ret = cfg_allocz(sizeof(struct f_inst));
  ret->code = ret->aux = 0;  ret->fi_code = fi_code;
  ret->arg1 = ret->arg2 = ret->next = NULL; 
   ret->lineno = ifs->lino;    ret->lineno = ifs->lino;
   return ret;    return ret;
 }  }
   
 struct f_inst *  struct f_inst *
f_new_dynamic_attr(int type, int f_type UNUSED, int code)f_new_inst_da(enum f_instruction_code fi_code, struct f_dynamic_attr da)
 {  {
  /* FIXME: Remove the f_type parameter? */  struct f_inst *ret = f_new_inst(fi_code);
  struct f_inst *f = f_new_inst();  ret->aux = da.type;
  f->aux = type;  ret->a2.i = da.ea_code;
  f->a2.i = code;  return ret;
  return f; 
 }  }
   
   struct f_inst *
   f_new_inst_sa(enum f_instruction_code fi_code, struct f_static_attr sa)
   {
     struct f_inst *ret = f_new_inst(fi_code);
     ret->aux = sa.f_type;
     ret->a2.i = sa.sa_code;
     ret->a1.i = sa.readonly;
     return ret;
   }
   
 /*  /*
  * Generate set_dynamic( operation( get_dynamic(), argument ) )   * Generate set_dynamic( operation( get_dynamic(), argument ) )
  */   */
 struct f_inst *  struct f_inst *
f_generate_complex(int operation, int operation_aux, struct f_inst *dyn, struct f_inst *argument)f_generate_complex(int operation, int operation_aux, struct f_dynamic_attr da, struct f_inst *argument)
 {  {
  struct f_inst *set_dyn = f_new_inst(),  struct f_inst *set_dyn = f_new_inst_da(FI_EA_SET, da),
                *oper = f_new_inst(),                *oper = f_new_inst(operation),
                *get_dyn = dyn;                *get_dyn = f_new_inst_da(FI_EA_GET, da);
   
   *set_dyn = *get_dyn;  
   get_dyn->code = P('e','a');  
   oper->code = operation;  
   oper->aux = operation_aux;    oper->aux = operation_aux;
   oper->a1.p = get_dyn;    oper->a1.p = get_dyn;
   oper->a2.p = argument;    oper->a2.p = argument;
  set_dyn->code = P('e','S');
   set_dyn->a1.p = oper;    set_dyn->a1.p = oper;
   return set_dyn;    return set_dyn;
 }  }
Line 59  struct f_inst * Line 65  struct f_inst *
 f_generate_roa_check(struct symbol *sym, struct f_inst *prefix, struct f_inst *asn)  f_generate_roa_check(struct symbol *sym, struct f_inst *prefix, struct f_inst *asn)
 {  {
   struct f_inst_roa_check *ret = cfg_allocz(sizeof(struct f_inst_roa_check));    struct f_inst_roa_check *ret = cfg_allocz(sizeof(struct f_inst_roa_check));
  ret->i.code = P('R','C');  ret->i.fi_code = FI_ROA_CHECK;
   ret->i.lineno = ifs->lino;    ret->i.lineno = ifs->lino;
   ret->i.arg1 = prefix;    ret->i.arg1 = prefix;
   ret->i.arg2 = asn;    ret->i.arg2 = asn;

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>