summaryrefslogtreecommitdiffstats
path: root/src/vnet/bfd/bfd_protocol.c
blob: ede9536f3cfc9ac0b7df05bd593efac6340188a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <vnet/bfd/bfd_protocol.h>

u8 bfd_pkt_get_version (const bfd_pkt_t *pkt)
{
  return pkt->head.vers_diag >> 5;
}

void bfd_pkt_set_version (bfd_pkt_t *pkt, int version)
{
  pkt->head.vers_diag =
      (version << 5) | (pkt->head.vers_diag & ((1 << 5) - 1));
}

u8 bfd_pkt_get_diag_code (const bfd_pkt_t *pkt)
{
  return pkt->head.vers_diag & ((1 << 5) - 1);
}

void bfd_pkt_set_diag_code (bfd_pkt_t *pkt, int value)
{
  pkt->head.vers_diag =
      (pkt->head.vers_diag & ~((1 << 5) - 1)) | (value & ((1 << 5) - 1));
}

u8 bfd_pkt_get_state (const bfd_pkt_t *pkt)
{
  return pkt->head.sta_flags >> 6;
}

void bfd_pkt_set_state (bfd_pkt_t *pkt, int value)
{
  pkt->head.sta_flags = (value << 6) | (pkt->head.sta_flags & ((1 << 6) - 1));
}

u8 bfd_pkt_get_poll (const bfd_pkt_t *pkt)
{
  return (pkt->head.sta_flags >> 5) & 1;
}

void bfd_pkt_set_final (bfd_pkt_t *pkt) { pkt->head.sta_flags |= 1 << 5; }

u8 bfd_pkt_get_final (const bfd_pkt_t *pkt)
{
  return (pkt->head.sta_flags >> 4) & 1;
}

void bfd_pkt_set_poll (bfd_pkt_t *pkt);
u8 bfd_pkt_get_control_plane_independent (const bfd_pkt_t *pkt)
{
  return (pkt->head.sta_flags >> 3) & 1;
}

void bfd_pkt_set_control_plane_independent (bfd_pkt_t *pkt);

u8 bfd_pkt_get_auth_present (const bfd_pkt_t *pkt)
{
  return (pkt->head.sta_flags >> 2) & 1;
}

void bfd_pkt_set_auth_present (bfd_pkt_t *pkt);

u8 bfd_pkt_get_demand (const bfd_pkt_t *pkt)
{
  return (pkt->head.sta_flags >> 1) & 1;
}

void bfd_pkt_set_demand (bfd_pkt_t *pkt) { pkt->head.sta_flags |= 1 << 1; }

u8 bfd_pkt_get_multipoint (const bfd_pkt_t *pkt)
{
  return pkt->head.sta_flags & 1;
}

void bfd_pkt_set_multipoint (bfd_pkt_t *pkt);