コード例 #1
0
int nt_trav_user(ntrack_t *nt, 
	int32_t off_count, 
	int32_t max_count, 
	void *udata, 
	nt_trav_user_cb_t callback)
{
	int i, res, count;

	count = 0;
	for(i = off_count; i<nt->ui_count; i++) {
		user_info_t *ui = &nt->ui_base[i];

		if(max_count && count >= max_count) {
			break;
		}
		count ++;

		if(!magic_valid(ui->magic)) {
			continue;
		}
		/* check ui use api */
		ui = nt_get_user_by_id(nt, ui->id, ui->magic);
		if(!ui) {
			nt_error("[%d %d] not found.\n", ui->id, ui->magic);
			continue;
		}
		res = callback(ui, udata);
		if(res < 0) {
			nt_warn("stoped as " FMT_USER_STR " return: %d\n", FMT_USER(ui), res);
			return 0;
		}
	}

	return count;
}
コード例 #2
0
FILE *open_and_lock(const char *fn)
{
	FILE *fp = fopen(fn, "w+");
	if(!fp) {
		nt_error("open '%s' failed: %s\n", fn, strerror(errno));
		return NULL;
	}
	return fp;
}
コード例 #3
0
static int flush_lock(void)
{
	fd_lock = open(fn_stat_lock, O_RDONLY);
	if(fd_lock == -1) {
		nt_error("open lock file [%s]\n", fn_stat_lock);
		return -1;
	}
	return 0;
}
コード例 #4
0
static int dump_to_file(FILE *fp, char *id, uint64_t recv, uint64_t xmit)
{
	int n;

	n = fprintf(fp, "[%s] %ld %llu %llu\n", id, time(NULL), recv, xmit);
	if(n<0) {
		nt_error("err %p: %s\n", fp, strerror(errno));
	}
	return n;
}
コード例 #5
0
static int trav_priv_init(trav_priv_t *ptrav, const char *fname)
{
	FILE *fp = open_and_lock(fname);
	if(!fp) {
		nt_error("open and lock file: %s failed.\n", fname);
		exit(-1);
	}
	ptrav->fp = fp;
	return 0;
}
コード例 #6
0
int nt_trav_flow(ntrack_t *nt, 
	int32_t off_count, 
	int32_t max_count, 
	void *udata, 
	nt_trav_flow_cb_t callback)
{
	int i, res, count;

	count = 0;
	for(i = off_count; i<nt->fi_count; i++) {
		flow_info_t *fi = &nt->fi_base[i];

		if(max_count && count >= max_count) {
			break;
		}
		count ++;

		/* touch node */
		if(!magic_valid(fi->magic)) {
			continue;
		}
		/* check fi use api */
		fi = nt_get_flow_by_id(nt, fi->id, fi->magic);
		if(!fi) {
			nt_error("[%d %d] not found.\n", fi->id, fi->magic);
			continue;
		}
		res = callback(fi, udata);
		if(res < 0) {
			nt_warn("stoped as " FMT_FLOW_STR " return: %d\n", FMT_FLOW(fi), res);
			return 0;
		}
	}

	return count;
}
コード例 #7
0
ファイル: nt_df.cpp プロジェクト: Fusion/NativeTools
int nt_df(int argc, char** argv, char** env) {
    int ret = EXIT_SUCCESS;

    if(argc != 2) {
        ret = nt_error("Wrong # of arguments for %s: %d", __FUNCTION__, argc);
    }
    else {
        char *s = argv[1];
        struct statfs st;

        if (statfs(s, &st) < 0) {
            ret = EXIT_FAILURE;
        }
        else {
            // D,total,used,available,block_size
            printf("D,%lld,%lld,%lld,%d",
                ((long long)st.f_blocks * (long long)st.f_bsize) / 1024,
                ((long long)(st.f_blocks - (long long)st.f_bfree) * st.f_bsize) / 1024,
                ((long long)st.f_bfree * (long long)st.f_bsize) / 1024,
                (int) st.f_bsize);
        }
    }
    return ret;
}