diff options
Diffstat (limited to 'src/ipcpd/normal')
| -rw-r--r-- | src/ipcpd/normal/connmgr.h | 14 | ||||
| -rw-r--r-- | src/ipcpd/normal/dt.c | 12 | 
2 files changed, 18 insertions, 8 deletions
| diff --git a/src/ipcpd/normal/connmgr.h b/src/ipcpd/normal/connmgr.h index ca5288ae..a8edee7d 100644 --- a/src/ipcpd/normal/connmgr.h +++ b/src/ipcpd/normal/connmgr.h @@ -28,12 +28,14 @@  #include "ae.h" -#define NOTIFY_DT_CONN_ADD   0x00D0 -#define NOTIFY_DT_CONN_DEL   0x00D1 -#define NOTIFY_DT_CONN_QOS   0x00D2 - -#define NOTIFY_MGMT_CONN_ADD 0x00F0 -#define NOTIFY_MGMT_CONN_DEL 0x00F1 +#define NOTIFY_DT_CONN_ADD    0x00D0 +#define NOTIFY_DT_CONN_DEL    0x00D1 +#define NOTIFY_DT_CONN_QOS    0x00D2 +#define NOTIFY_DT_CONN_DOWN   0x00D3 + +#define NOTIFY_MGMT_CONN_ADD  0x00F0 +#define NOTIFY_MGMT_CONN_DEL  0x00F1 +#define NOTIFY_MGMT_CONN_DOWN 0x00F2  int         connmgr_init(void); diff --git a/src/ipcpd/normal/dt.c b/src/ipcpd/normal/dt.c index 2df17163..56cb5a61 100644 --- a/src/ipcpd/normal/dt.c +++ b/src/ipcpd/normal/dt.c @@ -93,6 +93,7 @@ static void sdu_handler(int                  fd,                          struct shm_du_buff * sdb)  {          struct dt_pci dt_pci; +        int           ret;          memset(&dt_pci, 0, sizeof(dt_pci)); @@ -112,8 +113,11 @@ static void sdu_handler(int                  fd,                          return;                  } -                if (ipcp_flow_write(fd, sdb)) { +                ret = ipcp_flow_write(fd, sdb); +                if (ret < 0) {                          log_err("Failed to write SDU to fd %d.", fd); +                        if (ret == -EFLOWDOWN) +                                notifier_event(NOTIFY_DT_CONN_DOWN, &fd);                          ipcp_sdb_release(sdb);                          return;                  } @@ -323,6 +327,7 @@ int dt_write_sdu(uint64_t             dst_addr,  {          int           fd;          struct dt_pci dt_pci; +        int           ret;          assert(sdb);          assert(dst_addr != ipcpi.dt_addr); @@ -342,8 +347,11 @@ int dt_write_sdu(uint64_t             dst_addr,                  return -1;          } -        if (ipcp_flow_write(fd, sdb)) { +        ret = ipcp_flow_write(fd, sdb); +        if (ret < 0) {                  log_err("Failed to write SDU to fd %d.", fd); +                if (ret == -EFLOWDOWN) +                        notifier_event(NOTIFY_DT_CONN_DOWN, &fd);                  return -1;          } | 
