summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ipcpd/ipcp.c8
-rw-r--r--src/lib/rib.c17
2 files changed, 17 insertions, 8 deletions
diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c
index 617dd11f..e7929d31 100644
--- a/src/ipcpd/ipcp.c
+++ b/src/ipcpd/ipcp.c
@@ -194,9 +194,13 @@ static int ipcp_rib_readdir(char *** buf)
static int ipcp_rib_getattr(const char * path,
struct rib_attr * attr)
{
- (void) path;
+ char buf[LAYER_NAME_SIZE + 2];
+ struct timespec now;
- attr->size = LAYER_NAME_SIZE;
+ clock_gettime(CLOCK_REALTIME_COARSE, &now);
+
+ attr->size = ipcp_rib_read(path, buf, LAYER_NAME_SIZE + 2);
+ attr->mtime = now.tv_sec;
return 0;
}
diff --git a/src/lib/rib.c b/src/lib/rib.c
index 78ae82ef..965e1077 100644
--- a/src/lib/rib.c
+++ b/src/lib/rib.c
@@ -207,12 +207,15 @@ static size_t __getattr(const char * path,
if (strcmp(comp, r->path) == 0) {
size_t ret = r->ops->getattr(path + 1, &attr);
pthread_rwlock_unlock(&rib.lock);
- st->st_mode = S_IFREG | 0755;
- st->st_nlink = 1;
- st->st_uid = getuid();
- st->st_gid = getgid();
- st->st_size = attr.size;
- st->st_mtime = attr.mtime;
+ st->st_mode = S_IFREG | 0644;
+ st->st_blocks = 1;
+ st->st_nlink = 1;
+ st->st_uid = getuid();
+ st->st_gid = getgid();
+ st->st_size = attr.size;
+ st->st_atime = attr.mtime;
+ st->st_mtime = attr.mtime;
+ st->st_ctime = attr.mtime;
return ret;
}
}
@@ -256,6 +259,8 @@ static int rib_getattr(const char * path,
st->st_uid = getuid();
st->st_gid = getgid();
st->st_mtime = now.tv_sec;
+ st->st_atime = now.tv_sec;
+ st->st_ctime = now.tv_sec;
return 0;
}