Exemplo n.º 1
0
static HParsedToken *act_notime(const HParseResult *p, void *user)
{
    DNP3_Object *o = H_ALLOC(DNP3_Object);

    // p = (cs, status)
    o->cmdev.status = H_FIELD_UINT(0);
    o->cmdev.cs     = H_FIELD_UINT(1);

    return H_MAKE(DNP3_Object, o);
}
Exemplo n.º 2
0
static HParsedToken *act_ctr_flag_time(const HParseResult *p, void *user)
{
    DNP3_Object *o = H_ALLOC(DNP3_Object);

    // p = (flags, value)
    o->timed.ctr.flags = H_FIELD(DNP3_Object, 0)->flags;
    o->timed.ctr.value = H_FIELD_UINT(1);
    o->timed.abstime   = H_FIELD_UINT(2);

    return H_MAKE(DNP3_Object, o);
}
Exemplo n.º 3
0
Arquivo: rr.c Projeto: spease/hammer
const HParsedToken* act_wks(const HParseResult *p) {
  dns_rr_wks_t *wks = H_ALLOC(dns_rr_wks_t);

  wks->address  = H_FIELD_UINT(0);
  wks->protocol = H_FIELD_UINT(1);
  wks->len      = H_FIELD_SEQ(2)->used;
  wks->bit_map  = h_arena_malloc(p->arena, sizeof(uint8_t)*wks->len);
  for (size_t i=0; i<wks->len; ++i)
    wks->bit_map[i] = H_INDEX_UINT(p->ast, 2, i);

  return H_MAKE(dns_rr_wks_t, wks);
}
Exemplo n.º 4
0
Arquivo: rr.c Projeto: spease/hammer
const HParsedToken* act_soa(const HParseResult *p) {
  dns_rr_soa_t *soa = H_ALLOC(dns_rr_soa_t);

  soa->mname   = *H_FIELD(dns_domain_t, 0);
  soa->rname   = *H_FIELD(dns_domain_t, 1);
  soa->serial  = H_FIELD_UINT(2);
  soa->refresh = H_FIELD_UINT(3);
  soa->retry   = H_FIELD_UINT(4);
  soa->expire  = H_FIELD_UINT(5);
  soa->minimum = H_FIELD_UINT(6);

  return H_MAKE(dns_rr_soa_t, soa);
}
Exemplo n.º 5
0
Arquivo: rr.c Projeto: spease/hammer
const HParsedToken* act_mx(const HParseResult *p) {
  dns_rr_mx_t *mx = H_ALLOC(dns_rr_mx_t);

  mx->preference = H_FIELD_UINT(0);
  mx->exchange   = *H_FIELD(dns_domain_t, 1);

  return H_MAKE(dns_rr_mx_t, mx);
}
Exemplo n.º 6
0
static HParsedToken *act_segment(const HParseResult *p, void *user)
{
    DNP3_Segment *s = H_ALLOC(DNP3_Segment);

    s->fin = H_FIELD_UINT(0, 0);
    s->fir = H_FIELD_UINT(0, 1);
    s->seq = H_FIELD_UINT(0, 2);

    HCountedArray *a = H_FIELD_SEQ(1);
    s->len = a->used;
    s->payload = h_arena_malloc(p->arena, s->len);
    assert(s->payload != NULL);
    for(size_t i=0; i<s->len; i++) {
        s->payload[i] = H_CAST_UINT(a->elements[i]);
    }

    return H_MAKE(DNP3_Segment, s);
}
Exemplo n.º 7
0
Arquivo: rr.c Projeto: spease/hammer
const HParsedToken *act_null(const HParseResult *p) {
  dns_rr_null_t *null = H_ALLOC(dns_rr_null_t);

  size_t len = h_seq_len(p->ast);
  uint8_t *buf = h_arena_malloc(p->arena, sizeof(uint8_t)*len);
  for (size_t i=0; i<len; ++i)
    buf[i] = H_FIELD_UINT(i);

  return H_MAKE(dns_rr_null_t, null);
}
Exemplo n.º 8
0
static HParsedToken *act_crob(const HParseResult *p, void *user)
{
    DNP3_Object *o = H_ALLOC(DNP3_Object);

    // p = (optype,qu,cr,tcc,count,on,off,status)
    o->cmd.optype  = H_FIELD_UINT(0);
    o->cmd.queue   = H_FIELD_UINT(1);
    o->cmd.clear   = H_FIELD_UINT(2);
    o->cmd.tcc     = H_FIELD_UINT(3);
    o->cmd.count   = H_FIELD_UINT(4);
    o->cmd.on      = H_FIELD_UINT(5);
    o->cmd.off     = H_FIELD_UINT(6);
    o->cmd.status  = H_FIELD_UINT(7);

    return H_MAKE(DNP3_Object, o);
}
Exemplo n.º 9
0
static HParsedToken *act_flags(const HParseResult *p, void *user)
{
    DNP3_Object *o = H_ALLOC(DNP3_Object);

    o->flags.online          = H_FIELD_UINT(0);
    o->flags.restart         = H_FIELD_UINT(1);
    o->flags.comm_lost       = H_FIELD_UINT(2);
    o->flags.remote_forced   = H_FIELD_UINT(3);
    o->flags.local_forced    = H_FIELD_UINT(4);
    o->flags.discontinuity   = H_FIELD_UINT(5);

    return H_MAKE(DNP3_Object, o);
}