Ejemplo n.º 1
0
int
main(int argc, char *argv[])
{
	char *config = serenity_config(argc, argv);
	int rc;
	rc = sn_init(&serenity, config);
	if (rc == -1)
		return 1;
	rc = sn_open(&serenity);
	if (rc == -1)
		goto shutdown;
	sn_start(&serenity);
shutdown:
	sn_shutdown(&serenity);
	return 0;
}
Ejemplo n.º 2
0
int
main(int argc, char *argv[])
{
	int i;
	char *file_name;

	if (argc < 2) {
            print_usage(argv[0]);
            exit(1);
	}

	while ((i = getopt (argc, argv, "Dludbv")) != EOF) {
		switch (i){
			case 'l':
				optflag |= LIST;	
				break;

			case 'd':
				optflag |= DIAG;
				break;

			case 'v':
                                optflag |= VIEW;
				break;
                                
			case 'b':
                                optflag |= BIN;	
				break;
                                
			case 'u':
                                optflag |= VIEWUDP;	
				break;

			case 'D':
                                optflag |= VERBOSE;	
				break;                                

			default:
                            print_usage(argv[0]);
                            exit(0);
		}
	}

	/*
	 * snoop ファイルを open 必須
	 */
	if(argc == 3)
		file_name = argv[2];
	else
		file_name = argv[1];

	if( sn_open(file_name) < 0){
		perror("sn_open()");
		exit(0);
	}


	/*
	 * packet 数(count)を得る 必須
	 */
	if (sn_count() < 0){
		perror("sn_count()");
		exit(0);
	}
	
	/*
	 * packet のリスト(plist_head)を得る 必須
	 */
	if ( get_plist() < 0){
		perror("get_plist()");
		exit(0);
	}

	/*
	 * packet を読む 必須
	 */
	if ( read_packet() < 0){
		perror("read_packet()");
		exit(0);
	}

	/*
	 *  connection list 
	 *  と udp port pair list を見る オプション
         */
	if(optflag & LIST){
		if ( read_conn_list() <0 ) { 
			perror("read_conn_list()");
			exit(0);
		}
		if ( read_pair_list() <0 ) { 
			perror("read_pair_list()");
			exit(0);
		}                
              
	}

	/*
	 *  各 connection の packet の流れを表示 オプション
	 *  追加オプションによって、packet の ack を確認等を行う
         */
	if(optflag & (VIEW|DIAG)){
		if ( view_conn() < 0 ) { 
			perror("view_conn()");
			exit(0);
		}
	}
        
	/*
	 *  各 UDP port pair の packet の流れを表示 オプション
	 *  追加オプションはまだ未実装
         */
	if(optflag & (VIEWUDP)){
		if ( view_pair(optflag) < 0 ) { 
			perror("view_pair()");
			exit(0);
		}
	}        

	/*
	 *  各 connection の 各方向毎の TCP の data 部をファイルとして保存。
	 *  file 名 は <src IP>.<src port>-<dest IP>.<dest port>
         */
	if(optflag & BIN){
		if ( mkbin() <0 ) { 
			perror("mkbin()");
			exit(0);
		}
	}
	return (0);
}