summaryrefslogtreecommitdiff
path: root/src/ipcpd
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipcpd')
-rw-r--r--src/ipcpd/unicast/dt.c14
-rw-r--r--src/ipcpd/unicast/fa.c12
-rw-r--r--src/ipcpd/unicast/pol/link_state.c12
3 files changed, 31 insertions, 7 deletions
diff --git a/src/ipcpd/unicast/dt.c b/src/ipcpd/unicast/dt.c
index 9f15e2da..0f504daa 100644
--- a/src/ipcpd/unicast/dt.c
+++ b/src/ipcpd/unicast/dt.c
@@ -185,13 +185,17 @@ static int dt_rib_read(const char * path,
int i;
char str[QOS_BLOCK_LEN + 1];
char addrstr[20];
+ char * entry;
char tmstr[20];
size_t rxqlen = 0;
size_t txqlen = 0;
struct tm * tm;
/* NOTE: we may need stronger checks. */
- fd = atoi(path);
+ entry = strstr(path, RIB_SEPARATOR) + 1;
+ assert(entry);
+
+ fd = atoi(entry);
if (len < RIB_FILE_STRLEN)
return 0;
@@ -333,9 +337,13 @@ static int dt_rib_getattr(const char * path,
struct rib_attr * attr)
{
#ifdef IPCP_FLOW_STATS
- int fd;
+ int fd;
+ char * entry;
+
+ entry = strstr(path, RIB_SEPARATOR) + 1;
+ assert(entry);
- fd = atoi(path);
+ fd = atoi(entry);
pthread_mutex_lock(&dt.stat[fd].lock);
diff --git a/src/ipcpd/unicast/fa.c b/src/ipcpd/unicast/fa.c
index de9ca83d..2fa335e2 100644
--- a/src/ipcpd/unicast/fa.c
+++ b/src/ipcpd/unicast/fa.c
@@ -133,9 +133,13 @@ static int fa_rib_read(const char * path,
char r_eidstr[21];
char tmstr[20];
char castr[1024];
+ char * entry;
struct tm * tm;
- fd = atoi(path);
+ entry = strstr(path, RIB_SEPARATOR) + 1;
+ assert(entry);
+
+ fd = atoi(entry);
if (fd < 0 || fd > PROG_MAX_FLOWS)
return -1;
@@ -253,9 +257,13 @@ static int fa_rib_getattr(const char * path,
{
#ifdef IPCP_FLOW_STATS
int fd;
+ char * entry;
struct fa_flow * flow;
- fd = atoi(path);
+ entry = strstr(path, RIB_SEPARATOR) + 1;
+ assert(entry);
+
+ fd = atoi(entry);
flow = &fa.flows[fd];
diff --git a/src/ipcpd/unicast/pol/link_state.c b/src/ipcpd/unicast/pol/link_state.c
index 882bb8ac..08d39372 100644
--- a/src/ipcpd/unicast/pol/link_state.c
+++ b/src/ipcpd/unicast/pol/link_state.c
@@ -184,15 +184,19 @@ static int lsdb_rib_getattr(const char * path,
{
struct adjacency * adj;
struct timespec now;
+ char * entry;
assert(path);
assert(attr);
+ entry = strstr(path, RIB_SEPARATOR) + 1;
+ assert(entry);
+
clock_gettime(CLOCK_REALTIME_COARSE, &now);
pthread_rwlock_rdlock(&ls.db_lock);
- adj = get_adj(path);
+ adj = get_adj(entry);
if (adj != NULL) {
attr->mtime = adj->stamp;
attr->size = LS_ENTRY_SIZE;
@@ -211,16 +215,20 @@ static int lsdb_rib_read(const char * path,
size_t len)
{
struct adjacency * a;
+ char * entry;
int size;
assert(path);
+ entry = strstr(path, RIB_SEPARATOR) + 1;
+ assert(entry);
+
pthread_rwlock_rdlock(&ls.db_lock);
if (ls.db_len + ls.nbs_len == 0)
goto fail;
- a = get_adj(path);
+ a = get_adj(entry);
if (a == NULL)
goto fail;