
Marking local functions: fci_routes_remove_related_connections


Marking externally visible functions: fci_routes_drop_all_ipv6 fci_routes_drop_all_ipv4 fci_routes_drop_all fci_routes_drop_one fci_routes_cmd


Marking externally visible variables:


Reclaiming functions:
Reclaiming variables:
Clearing address taken flags:
Symbol table:

pfe_rtable_get_next/46 (pfe_rtable_get_next) @075579a0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_remove_related_connections/22 
  Calls: 
fci_connections_drop_one/45 (fci_connections_drop_one) @075578c0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_remove_related_connections/22 
  Calls: 
pfe_rtable_get_first/44 (pfe_rtable_get_first) @075577e0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_remove_related_connections/22 
  Calls: 
fci_rt_db_remove/43 (fci_rt_db_remove) @07557620
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_drop_one/24 
  Calls: 
fci_core_client_send/42 (fci_core_client_send) @07557540
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_drop_one/24 
  Calls: 
pfe_if_db_unlock/41 (pfe_if_db_unlock) @07557380
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 
  Calls: 
strncpy/40 (strncpy) @075572a0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 
  Calls: 
pfe_phy_if_get_name/39 (pfe_phy_if_get_name) @075571c0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 
  Calls: 
fci_rt_db_get_next/38 (fci_rt_db_get_next) @075570e0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_drop_all_ipv6/27 fci_routes_drop_all_ipv4/26 fci_routes_drop_all/25 fci_routes_cmd/23 
  Calls: 
fci_rt_db_get_first/37 (fci_rt_db_get_first) @07557000
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_drop_all_ipv6/27 fci_routes_drop_all_ipv4/26 fci_routes_drop_all/25 fci_routes_cmd/23 fci_routes_cmd/23 
  Calls: 
fci_rt_db_add/36 (fci_rt_db_add) @076069a0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 
  Calls: 
pfe_phy_if_get_mac_addr_first/35 (pfe_phy_if_get_mac_addr_first) @07606380
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 
  Calls: 
memcmp/34 (memcmp) @076060e0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 
  Calls: 
pfe_if_db_entry_get_phy_if/33 (pfe_if_db_entry_get_phy_if) @07606ee0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 
  Calls: 
pfe_if_db_get_first/32 (pfe_if_db_get_first) @07606e00
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 
  Calls: 
pfe_if_db_lock/31 (pfe_if_db_lock) @07606d20
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 
  Calls: 
memcpy/30 (memcpy) @07606c40
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 fci_routes_cmd/23 fci_routes_cmd/23 fci_routes_cmd/23 
  Calls: 
memset/29 (memset) @07606b60
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_drop_one/24 fci_routes_cmd/23 fci_routes_cmd/23 fci_routes_cmd/23 
  Calls: 
__context/28 (__context) @07556360
  Type: variable
  Body removed by symtab_remove_unreachable_nodes
  Visibility: external public
  References: 
  Referring: fci_routes_cmd/23 (addr)fci_routes_drop_one/24 (addr)fci_routes_remove_related_connections/22 (addr)fci_routes_drop_all/25 (addr)fci_routes_drop_all_ipv4/26 (addr)fci_routes_drop_all_ipv6/27 (addr)
  Availability: not_available
  Varpool flags:
fci_routes_drop_all_ipv6/27 (fci_routes_drop_all_ipv6) @07606540
  Type: function definition analyzed
  Visibility: externally_visible public
  References: __context/28 (addr)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: fci_rt_db_get_next/38 fci_routes_drop_one/24 fci_rt_db_get_first/37 
fci_routes_drop_all_ipv4/26 (fci_routes_drop_all_ipv4) @076062a0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: __context/28 (addr)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: fci_rt_db_get_next/38 fci_routes_drop_one/24 fci_rt_db_get_first/37 
fci_routes_drop_all/25 (fci_routes_drop_all) @07606000
  Type: function definition analyzed
  Visibility: externally_visible public
  References: __context/28 (addr)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: fci_rt_db_get_next/38 fci_routes_drop_one/24 fci_rt_db_get_first/37 
fci_routes_drop_one/24 (fci_routes_drop_one) @07551c40
  Type: function definition analyzed
  Visibility: externally_visible public
  References: __context/28 (addr)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: fci_routes_drop_all_ipv6/27 fci_routes_drop_all_ipv4/26 fci_routes_drop_all/25 fci_routes_cmd/23 
  Calls: fci_rt_db_remove/43 fci_routes_remove_related_connections/22 fci_core_client_send/42 memset/29 
fci_routes_cmd/23 (fci_routes_cmd) @07551e00
  Type: function definition analyzed
  Visibility: externally_visible public
  References: __context/28 (addr)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: pfe_if_db_unlock/41 strncpy/40 pfe_phy_if_get_name/39 memcpy/30 memcpy/30 memcpy/30 fci_rt_db_get_next/38 fci_rt_db_get_first/37 fci_routes_drop_one/24 fci_rt_db_get_first/37 fci_rt_db_add/36 pfe_phy_if_get_mac_addr_first/35 memcmp/34 memset/29 pfe_if_db_entry_get_phy_if/33 pfe_if_db_get_first/32 pfe_if_db_lock/31 memcpy/30 memset/29 memset/29 
fci_routes_remove_related_connections/22 (fci_routes_remove_related_connections) @07551b60
  Type: function definition analyzed
  Visibility: prevailing_def_ironly
  References: __context/28 (addr)
  Referring: 
  Availability: local
  Function flags: body local optimize_size
  Called by: fci_routes_drop_one/24 
  Calls: pfe_rtable_get_next/46 fci_connections_drop_one/45 pfe_rtable_get_first/44 
fci_routes_drop_all_ipv6 ()
{
  errno_t ret;
  struct fci_rt_db_entry_t * entry;
  struct fci_t * fci_context;

  <bb 2> :
  # DEBUG BEGIN_STMT
  fci_context = &__context;
  # DEBUG BEGIN_STMT
  entry = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &fci_context->route_db;
  entry = fci_rt_db_get_first (_1, 0, 0B);
  # DEBUG BEGIN_STMT
  goto <bb 6>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _2 = entry->dst_ip.is_ipv4;
  if (_2 == 0)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  ret = fci_routes_drop_one (entry);
  # DEBUG BEGIN_STMT

  <bb 5> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _3 = &fci_context->route_db;
  entry = fci_rt_db_get_next (_3);

  <bb 6> :
  # DEBUG BEGIN_STMT
  if (entry != 0B)
    goto <bb 3>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 7> :
  return;

}


fci_routes_drop_all_ipv4 ()
{
  errno_t ret;
  struct fci_rt_db_entry_t * entry;
  struct fci_t * fci_context;

  <bb 2> :
  # DEBUG BEGIN_STMT
  fci_context = &__context;
  # DEBUG BEGIN_STMT
  entry = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &fci_context->route_db;
  entry = fci_rt_db_get_first (_1, 0, 0B);
  # DEBUG BEGIN_STMT
  goto <bb 6>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _2 = entry->dst_ip.is_ipv4;
  if (_2 != 0)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  ret = fci_routes_drop_one (entry);
  # DEBUG BEGIN_STMT

  <bb 5> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _3 = &fci_context->route_db;
  entry = fci_rt_db_get_next (_3);

  <bb 6> :
  # DEBUG BEGIN_STMT
  if (entry != 0B)
    goto <bb 3>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 7> :
  return;

}


fci_routes_drop_all ()
{
  errno_t ret;
  struct fci_rt_db_entry_t * entry;
  struct fci_t * fci_context;

  <bb 2> :
  # DEBUG BEGIN_STMT
  fci_context = &__context;
  # DEBUG BEGIN_STMT
  entry = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &fci_context->route_db;
  entry = fci_rt_db_get_first (_1, 0, 0B);
  # DEBUG BEGIN_STMT
  goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  ret = fci_routes_drop_one (entry);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _2 = &fci_context->route_db;
  entry = fci_rt_db_get_next (_2);

  <bb 4> :
  # DEBUG BEGIN_STMT
  if (entry != 0B)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  return;

}


fci_routes_drop_one (struct fci_rt_db_entry_t * route)
{
  errno_t ret;
  struct fpp_rt_cmd_t * rt_cmd;
  struct fci_msg_t msg;
  struct fci_t * fci_context;
  errno_t D.12496;

  <bb 2> :
  # DEBUG BEGIN_STMT
  fci_context = &__context;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rt_cmd = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  memset (&msg, 0, 276);
  # DEBUG BEGIN_STMT
  msg.type = 4099;
  # DEBUG BEGIN_STMT
  msg.msg_cmd.code = 787;
  # DEBUG BEGIN_STMT
  rt_cmd = &msg.msg_cmd.payload;
  # DEBUG BEGIN_STMT
  rt_cmd->action = 3;
  # DEBUG BEGIN_STMT
  _1 = route->refptr;
  if (_1 != 0B)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _2 = route->id;
  rt_cmd->id = _2;
  # DEBUG BEGIN_STMT
  _3 = route->refptr;
  ret = fci_core_client_send (_3, &msg, 0B);
  # DEBUG BEGIN_STMT

  <bb 4> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  fci_routes_remove_related_connections (route);
  # DEBUG BEGIN_STMT
  _4 = &fci_context->route_db;
  ret = fci_rt_db_remove (_4, route);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  D.12496 = ret;
  msg = {CLOBBER};
  return D.12496;

}


fci_routes_cmd (struct fci_msg_t * msg, uint16_t * fci_ret, struct fpp_rt_cmd_t * reply_buf, uint32_t * reply_len)
{
  unsigned int D.12487;
  const uint8_t zero_mac[6];
  unsigned int D.12486;
  uint32_t session_id;
  struct pfe_phy_if_t * phy_if;
  struct pfe_if_db_entry_t * if_entry;
  struct fci_rt_db_entry_t * rt_entry;
  struct pfe_ip_addr_t ip;
  uint8_t dst_mac[6];
  uint8_t src_mac[6];
  errno_t ret;
  bool_t is_ipv6;
  struct fpp_rt_cmd_t * rt_cmd;
  struct fci_t * fci_context;
  errno_t D.12485;

  <bb 2> :
  # DEBUG BEGIN_STMT
  fci_context = &__context;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  is_ipv6 = 0;
  # DEBUG BEGIN_STMT
  ret = 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rt_entry = 0B;
  # DEBUG BEGIN_STMT
  if_entry = 0B;
  # DEBUG BEGIN_STMT
  phy_if = 0B;
  # DEBUG BEGIN_STMT
  session_id = 0;
  # DEBUG BEGIN_STMT
  _1 = *reply_len;
  if (_1 <= 91)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ret = 22;
  goto <bb 37>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  *reply_len = 0;
  # DEBUG BEGIN_STMT
  memset (reply_buf, 0, 92);
  # DEBUG BEGIN_STMT
  rt_cmd = &msg->msg_cmd.payload;
  # DEBUG BEGIN_STMT
  _2 = rt_cmd->flags;
  _3 = _2 >> 24;
  _4 = rt_cmd->flags;
  _5 = _4 >> 8;
  _6 = _5 & 65280;
  _7 = _3 | _6;
  _8 = rt_cmd->flags;
  _9 = _8 << 8;
  _10 = _9 & 16711680;
  _11 = _7 | _10;
  _12 = rt_cmd->flags;
  _13 = _12 << 24;
  _14 = _11 | _13;
  _15 = _14 == 2;
  is_ipv6 = (bool_t) _15;
  # DEBUG BEGIN_STMT
  _16 = &rt_cmd->dst_mac;
  MEM[(char * {ref-all})&dst_mac] = MEM[(char * {ref-all})_16];
  # DEBUG BEGIN_STMT
  memset (&ip, 0, 22);
  # DEBUG BEGIN_STMT
  if (is_ipv6 != 0)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  _17 = &rt_cmd->dst_addr[0];
  memcpy (&ip.v6, _17, 16);
  # DEBUG BEGIN_STMT
  ip.is_ipv4 = 0;
  goto <bb 7>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  _18 = &rt_cmd->dst_addr[0];
  D.12486 = MEM[(char * {ref-all})_18];
  MEM[(char * {ref-all})&ip] = D.12486;
  # DEBUG BEGIN_STMT
  ip.is_ipv4 = 1;

  <bb 7> :
  # DEBUG BEGIN_STMT
  _19 = rt_cmd->action;
  _20 = (int) _19;
  switch (_20) <default: <L39> [INV], case 0: <L5> [INV], case 1: <L22> [INV], case 4: <L27> [INV], case 6: <L28> [INV], case 7: <L30> [INV]>

  <bb 8> :
<L5>:
  # DEBUG BEGIN_STMT
  ret = pfe_if_db_lock (&session_id);
  # DEBUG BEGIN_STMT
  if (ret == 0)
    goto <bb 9>; [INV]
  else
    goto <bb 10>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  _21 = fci_context->phy_if_db;
  session_id.0_22 = session_id;
  _23 = &rt_cmd->output_device;
  ret = pfe_if_db_get_first (_21, session_id.0_22, 3, _23, &if_entry);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT

  <bb 10> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if_entry.1_24 = if_entry;
  if (if_entry.1_24 == 0B)
    goto <bb 11>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 11> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret = 3;
  # DEBUG BEGIN_STMT
  goto <bb 35>; [INV]

  <bb 12> :
  # DEBUG BEGIN_STMT
  if_entry.2_25 = if_entry;
  phy_if = pfe_if_db_entry_get_phy_if (if_entry.2_25);
  # DEBUG BEGIN_STMT
  zero_mac = "\x00";
  # DEBUG BEGIN_STMT
  memset (&src_mac, 0, 6);
  # DEBUG BEGIN_STMT
  _26 = &rt_cmd->src_mac;
  _27 = memcmp (_26, &zero_mac, 6);
  if (_27 == 0)
    goto <bb 13>; [INV]
  else
    goto <bb 14>; [INV]

  <bb 13> :
  # DEBUG BEGIN_STMT
  _28 = pfe_phy_if_get_mac_addr_first (phy_if, &src_mac, 3, 3, 6);
  # DEBUG BEGIN_STMT
  goto <bb 15>; [INV]

  <bb 14> :
  # DEBUG BEGIN_STMT
  _29 = &rt_cmd->src_mac;
  MEM[(char * {ref-all})&src_mac] = MEM[(char * {ref-all})_29];

  <bb 15> :
  zero_mac = {CLOBBER};
  # DEBUG BEGIN_STMT
  _30 = &fci_context->route_db;
  _31 = rt_cmd->id;
  _32 = msg->client;
  ret = fci_rt_db_add (_30, &ip, &src_mac, &dst_mac, phy_if, _31, _32, 0);
  # DEBUG BEGIN_STMT
  if (ret == 115)
    goto <bb 16>; [INV]
  else
    goto <bb 17>; [INV]

  <bb 16> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret = 200;
  # DEBUG BEGIN_STMT
  goto <bb 35>; [INV]

  <bb 17> :
  # DEBUG BEGIN_STMT
  if (ret != 0)
    goto <bb 18>; [INV]
  else
    goto <bb 19>; [INV]

  <bb 18> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret = 3;
  # DEBUG BEGIN_STMT
  goto <bb 35>; [INV]

  <bb 19> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret = 0;
  # DEBUG BEGIN_STMT
  goto <bb 35>; [INV]

  <bb 20> :
<L22>:
  # DEBUG BEGIN_STMT
  _33 = &fci_context->route_db;
  _34 = &rt_cmd->id;
  rt_entry = fci_rt_db_get_first (_33, 5, _34);
  # DEBUG BEGIN_STMT
  if (rt_entry == 0B)
    goto <bb 21>; [INV]
  else
    goto <bb 22>; [INV]

  <bb 21> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret = 201;
  # DEBUG BEGIN_STMT
  goto <bb 35>; [INV]

  <bb 22> :
  # DEBUG BEGIN_STMT
  ret = fci_routes_drop_one (rt_entry);
  # DEBUG BEGIN_STMT
  if (ret != 0)
    goto <bb 23>; [INV]
  else
    goto <bb 35>; [INV]

  <bb 23> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret = 3;
  # DEBUG BEGIN_STMT
  goto <bb 35>; [INV]

  <bb 24> :
<L27>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret = 1;
  # DEBUG BEGIN_STMT
  goto <bb 35>; [INV]

  <bb 25> :
<L28>:
  # DEBUG BEGIN_STMT
  _35 = &fci_context->route_db;
  rt_entry = fci_rt_db_get_first (_35, 0, 0B);
  # DEBUG BEGIN_STMT
  if (rt_entry == 0B)
    goto <bb 26>; [INV]
  else
    goto <bb 27>; [INV]

  <bb 26> :
  # DEBUG BEGIN_STMT
  ret = 0;
  # DEBUG BEGIN_STMT
  *fci_ret = 201;
  # DEBUG BEGIN_STMT
  goto <bb 35>; [INV]

  <bb 27> :
<L30>:
  # DEBUG BEGIN_STMT
  if (rt_entry == 0B)
    goto <bb 28>; [INV]
  else
    goto <bb 30>; [INV]

  <bb 28> :
  # DEBUG BEGIN_STMT
  _36 = &fci_context->route_db;
  rt_entry = fci_rt_db_get_next (_36);
  # DEBUG BEGIN_STMT
  if (rt_entry == 0B)
    goto <bb 29>; [INV]
  else
    goto <bb 30>; [INV]

  <bb 29> :
  # DEBUG BEGIN_STMT
  ret = 0;
  # DEBUG BEGIN_STMT
  *fci_ret = 201;
  # DEBUG BEGIN_STMT
  goto <bb 35>; [INV]

  <bb 30> :
  # DEBUG BEGIN_STMT
  *reply_len = 92;
  # DEBUG BEGIN_STMT
  _37 = rt_entry->mtu;
  reply_buf->mtu = _37;
  # DEBUG BEGIN_STMT
  _38 = &reply_buf->src_mac;
  _39 = &rt_entry->src_mac;
  memcpy (_38, _39, 6);
  # DEBUG BEGIN_STMT
  _40 = &reply_buf->dst_mac;
  _41 = &rt_entry->dst_mac;
  memcpy (_40, _41, 6);
  # DEBUG BEGIN_STMT
  _42 = rt_entry->dst_ip.is_ipv4;
  if (_42 != 0)
    goto <bb 31>; [INV]
  else
    goto <bb 32>; [INV]

  <bb 31> :
  # DEBUG BEGIN_STMT
  _43 = &reply_buf->dst_addr[0];
  _44 = &rt_entry->dst_ip.v4;
  D.12487 = MEM[(char * {ref-all})_44];
  MEM[(char * {ref-all})_43] = D.12487;
  # DEBUG BEGIN_STMT
  reply_buf->flags = 16777216;
  goto <bb 33>; [INV]

  <bb 32> :
  # DEBUG BEGIN_STMT
  _45 = &reply_buf->dst_addr[0];
  _46 = &rt_entry->dst_ip.v6;
  memcpy (_45, _46, 16);
  # DEBUG BEGIN_STMT
  reply_buf->flags = 33554432;

  <bb 33> :
  # DEBUG BEGIN_STMT
  _47 = rt_entry->id;
  reply_buf->id = _47;
  # DEBUG BEGIN_STMT
  _48 = &reply_buf->output_device;
  _49 = rt_entry->iface;
  _50 = pfe_phy_if_get_name (_49);
  strncpy (_48, _50, 15);
  # DEBUG BEGIN_STMT
  *fci_ret = 0;
  # DEBUG BEGIN_STMT
  ret = 0;
  # DEBUG BEGIN_STMT
  goto <bb 35>; [INV]

  <bb 34> :
<L39>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret = 4;
  # DEBUG BEGIN_STMT

  <bb 35> :
  # DEBUG BEGIN_STMT
  _51 = rt_cmd->action;
  if (_51 == 0)
    goto <bb 36>; [INV]
  else
    goto <bb 37>; [INV]

  <bb 36> :
  # DEBUG BEGIN_STMT
  session_id.3_52 = session_id;
  ret = pfe_if_db_unlock (session_id.3_52);
  # DEBUG BEGIN_STMT

  <bb 37> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  D.12485 = ret;
  src_mac = {CLOBBER};
  dst_mac = {CLOBBER};
  ip = {CLOBBER};
  if_entry = {CLOBBER};
  session_id = {CLOBBER};
  return D.12485;

}


fci_routes_remove_related_connections (struct fci_rt_db_entry_t * route)
{
  errno_t ret;
  struct pfe_rtable_entry_t * entry;
  const struct fci_t * fci_context;

  <bb 2> :
  # DEBUG BEGIN_STMT
  fci_context = &__context;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = fci_context->rtable;
  _2 = &route->id;
  entry = pfe_rtable_get_first (_1, 4, _2);
  # DEBUG BEGIN_STMT
  goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  ret = fci_connections_drop_one (entry);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _3 = fci_context->rtable;
  entry = pfe_rtable_get_next (_3);

  <bb 4> :
  # DEBUG BEGIN_STMT
  if (entry != 0B)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  return;

}


