Exemple #1
0
GPrivate void gcmon_souter_flush()
{
    if (gpSouter != NULL)
    {
        so_write(gpSouter, file_get_fstat());
    }
}
Exemple #2
0
static void test_tcp_client(void)
{
	int sd;
	int re;
	struct sockaddr_in sa;

	printf("[tcp(client)] start\n");

	sd = so_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	DEBUG_PRINT(("so_socket = %d(%d, %d)\n", sd, MERCD(sd), SERCD(sd)));
	if ( sd < 0 ) {
		goto error2;
	}

	bzero(&sa, sizeof sa);
	sa.sin_family = AF_INET;
	sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
	sa.sin_port = htons(12345);
	re = so_connect(sd, (struct sockaddr*)&sa, sizeof sa);
	printf("so_connect = %d(%d, %d)\n", re, MERCD(re), SERCD(re));
	if ( re < 0 ) {
		goto error2;
	}

	re = so_write(sd, "1234", 4);
	DEBUG_PRINT(("so_write = %d(%d, %d)\n", re, MERCD(re), SERCD(re)));
	if ( re < 0 ) {
		goto error2;
	}

	re = so_send(sd, "a", 1, MSG_OOB);
	DEBUG_PRINT(("so_send = %d(%d, %d)\n", re, MERCD(re), SERCD(re)));
	if ( re < 0 ) {
		goto error2;
	}

	so_close(sd);

	tk_wai_sem(semid2, 1, TMO_FEVR);
	re = so_break(server_tskid);
	DEBUG_PRINT(("so_break = %d(%d, %d)\n", re, MERCD(re), SERCD(re)));
	if ( re < 0 ) {
		goto error2;
	}

	printf("[tcp(client)] OK\n");
	return;

error2:
	if ( sd > 0 ) {
		so_close(sd);
	}
	so_break(server_tskid);
	printf("[tcp(client)] FAILED\n");
}
Exemple #3
0
static void route_cmd(int cmd, in_addr_t dest, in_addr_t gate, in_addr_t mask, int index, int direct)
{
	int i = 0;
	int sock;
	int re;
	struct {
		struct rt_msghdr rtm;
		struct sockaddr_in addr[3];
	} buf;

	bzero(&buf, sizeof buf);
	buf.rtm.rtm_version = RTM_VERSION;
	buf.rtm.rtm_type    = cmd;
	buf.rtm.rtm_index   = index;
	buf.rtm.rtm_flags   = RTF_STATIC;
	if ( direct ) {
		buf.rtm.rtm_flags |= RTF_HOST;
	} else {
		buf.rtm.rtm_flags |= RTF_GATEWAY;
	}
	buf.rtm.rtm_addrs   = RTA_DST | RTA_NETMASK;
	if ( gate != 0 ) {
		buf.rtm.rtm_addrs |= RTA_GATEWAY;
	}
	buf.rtm.rtm_inits   = RTV_HOPCOUNT;
	buf.rtm.rtm_rmx.rmx_hopcount = 1;
	buf.rtm.rtm_seq	    = 1;

	buf.addr[i].sin_len = sizeof(struct sockaddr_in);
	buf.addr[i].sin_family = AF_INET;
	buf.addr[i].sin_addr.s_addr = dest;
	i++;

	if ( gate != 0 ) {
		buf.addr[i].sin_len = sizeof(struct sockaddr_in);
		buf.addr[i].sin_family = AF_INET;
		buf.addr[i].sin_addr.s_addr = gate;
		i++;
	}

	buf.addr[i].sin_len = sizeof(struct sockaddr_in);
	buf.addr[i].sin_family = AF_INET;
	buf.addr[i].sin_addr.s_addr = mask;
	i++;

	buf.rtm.rtm_msglen = sizeof(struct rt_msghdr) + sizeof(struct sockaddr) * i;

	sock = so_socket(AF_ROUTE, SOCK_RAW, 0);
	DEBUG_PRINT(("route_add: so_socket = %d(%d, %d)\n", sock, MERCD(sock), SERCD(sock)));
	so_shutdown(sock, SHUT_RD);
	re = so_write(sock, &buf, buf.rtm.rtm_msglen);
	DEBUG_PRINT(("route_add: so_write = %d(%d, %d)\n", re, MERCD(re), SERCD(re)));
	so_close(sock);
}
Exemple #4
0
Fichier : crt.c Projet : arader/crt
int main( int argc, char **argv ) {
    void *dl_out = NULL;
    void *dl_in = NULL;
    char *dl_error = NULL;
    primitive *scene = NULL;
    primitive *tmp = NULL;

    int aa_level = 1;
    int shadows = 1;
    char *input = NULL;
    char *output = NULL;

    int (*so_write)(int,int,color***,char*);
    primitive* (*so_load)(char*);

    int width = 2048;
    int height = 2048;

    color ***img = NULL;
    int i,j;

    printf( "CRT - version 0.2.0\n" );

    if( argc < 3 ) {
        usage();
        exit( 1 );
    }

    for( i = 1; i < argc - 2; i++ ) {
        if( strcmp( argv[i], "--help" ) == 0 ) {
            usage();
            exit( 0 );
        }
        else if( strcmp( argv[i], "--input" ) == 0 ) {
            if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) {
                fprintf( stderr, "*** crt: missing argument to \"--input\"\n" );
                exit( 1 );
            }
            else {
                input = argv[i+1];
            }
        }
        else if( strcmp( argv[i], "--output" ) == 0 ) {
            if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) {
                fprintf( stderr,"*** crt: missing argument to \"--output\"\n" );
                exit( 1 );
            }
            else {
                output = argv[i+1];
            }
        }
        else if( strcmp( argv[i], "--aa" ) == 0 ) {
            if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) {
                fprintf( stderr, "*** crt: missing argument to \"--aa\"\n" );
                exit( 1 );
            }
            else {
                aa_level = atoi( argv[i+1] );
            }
        }
        else if( strcmp( argv[i], "--shadows" ) == 0 ) {
            if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) {
                fprintf(stderr, "*** crt: missing argument to \"--shadow\"\n");
                exit( 1 );
            }
            else {
                shadows = atoi( argv[i+1] );
            }
        }
        else if( strcmp( argv[i], "--width" ) == 0 ) {
            if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) {
                fprintf( stderr, "*** crt: missing argument to \"--width\"\n" );
            }
            else {
                width = atoi( argv[i+1] );
            }
        }
        else if( strcmp( argv[i], "--height" ) == 0 ) {
            if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) {
                fprintf( stderr,"*** crt: missing argument to \"--height\"\n" );
            }
            else {
                height = atoi( argv[i+1] );
            }
        }
    }

    /* setup the output plugin */
    if( output == NULL ) {
        dl_out = dlopen( "./outputs/bmp.so", RTLD_LAZY );
    }
    else {
        dl_out = dlopen( output, RTLD_LAZY );
    }
    if( !dl_out ) {
        fprintf( stderr, "*** error: %s\n", dlerror() );
        exit( 1 );
    }

    dlerror();      /* clear error code */
    so_write = (int (*)(int,int,color***,char*))dlsym( dl_out, "write_img" );
    if( (dl_error = dlerror()) != NULL ) {
        fprintf( stderr, "*** error: %s\n", dl_error );
        exit( 1 );
    }

    /* setup the input plugin */
    if( input == NULL ) {
        dl_in = dlopen( "./inputs/xml.so", RTLD_LAZY );
    }
    else {
        dl_in = dlopen( input, RTLD_LAZY );
    }
    if( !dl_in ) {
        fprintf( stderr, "*** error: %s\n", dlerror() );
        exit( 1 );
    }
    
    dlerror();
    so_load = (primitive* (*)(char*))dlsym( dl_in, "load_scene" );
    if( (dl_error = dlerror()) != NULL ) {
        fprintf( stderr, "*** error: %s\n", dl_error );
        exit( 1 );
    }

    /* setup the image's memory */
    img = malloc( height * sizeof(color**) );
    if( img == NULL ) {
        fprintf( stderr, "*** error: could not allocate image memory\n" );
        exit( 1 );
    }

    for( i = 0; i < height; i++ ) {
        img[i] = calloc( width, sizeof( color* ) );
        if( img[i] == NULL ) {
            fprintf( stderr, "*** error: could not allocate image memory\n" );
            exit( 1 );
        }
    }

    scene = so_load( argv[argc-2] );

    render( width, height, img, scene, aa_level, shadows );

    so_write( width, height, img, argv[argc-1] );

    for( i = 0; i < height; i++ ) {
        for( j = 0; j < width; j++ ) {
            /* free the color's memory */
            free( img[i][j] );
        }

        /* free the line's memory */
        free( img[i] );
    }

    /* free the image memory */
    free( img );

    /* free the scene object's memory */

    while( scene != NULL ) {
        free( scene->data );
        if( scene->grid != NULL ) {
            free( scene->grid );
        }

        tmp = scene->next;
        free( scene );

        scene = tmp;
    }

    dlclose( dl_out );
    dlclose( dl_in );

    return 0;
}