コード例 #1
0
ファイル: wackamole.c プロジェクト: postwait/wackamole
static  void    Release( entry *VE )
{
  int ic, n=0;
  struct interface idown, *nif;

  for(nif=&VE->pseudo_if; n<MAX_DEP_IF; nif = &(VE->extra_ifs[n++])) {
	if(nif->ipaddr.s_addr == 0) break;
    memcpy(&idown, nif, sizeof(struct interface));
    ic = if_down(&idown);
    if(ic) {
      const char *em = if_error();
      if(em && strlen(em)) {
      	wack_alarm(PRINT, "%d %s", __LINE__, if_error());
      }
    } else {
      char buffer[16];
      snprintf(buffer, 16, inet_ntoa(idown.ipaddr));
      wack_alarm(PRINT, "DOWN: %s:%s/%s",
	idown.ifname,buffer,inet_ntoa(idown.netmask));
    }
    execute_all_user(VE->pseudo_if, VE->extra_ifs, VE->real_if,
                     DLFUNCS_TYPE_ON_DOWN);
  }
  My.num_allocated--;
}
コード例 #2
0
ファイル: wackamole.c プロジェクト: postwait/wackamole
static  void    force_reup()
{
  int i;
  for(i=0; i < Num_pseudo; i++) {
    if ( _rif_ip_s(My) == _rif_ip_s(Allocation_table[i]) ) {
      /* This is ours */
      int ic, n=0;
      struct interface iface, *nif;
      entry *VE;

      VE = &Allocation_table[i];
      for(nif=&VE->pseudo_if; n<MAX_DEP_IF; nif = &(VE->extra_ifs[n++])) {
	if(nif->ipaddr.s_addr == 0) break;
        memcpy(&iface, nif, sizeof(struct interface));
        ic = if_up(&iface);
        if(ic)
          wack_alarm(PRINT, "%s", if_error());
        else {
          char buffer[16];
          snprintf(buffer, 16, inet_ntoa(iface.ipaddr));
          wack_alarm(PRINT, "  (re)UP: %s:%s/%s",
                     iface.ifname,buffer,inet_ntoa(iface.netmask));
        }
      }
      invoke_spoofer(VE);
    }
  }
}
コード例 #3
0
ファイル: wackamole.c プロジェクト: postwait/wackamole
static  void    Acquire( entry *VE )
{
  int ic, n=0;
  struct interface iface, *nif;

  for(nif=&VE->pseudo_if; n<MAX_DEP_IF; nif = &(VE->extra_ifs[n++])) {
	if(nif->ipaddr.s_addr == 0) break;
    memcpy(&iface, nif, sizeof(struct interface));
    ic = if_up(&iface);
    if(ic)
      wack_alarm(PRINT, "%d %s", __LINE__, if_error());
    else {
      char buffer[16];
      snprintf(buffer, 16, inet_ntoa(iface.ipaddr));
      wack_alarm(PRINT, "  UP: %s:%s/%s",
		iface.ifname,buffer,inet_ntoa(iface.netmask));
    }
  }
  invoke_spoofer(VE);
  execute_all_user(VE->pseudo_if, VE->extra_ifs, VE->real_if,
                   DLFUNCS_TYPE_ON_UP);
  My.num_allocated++;
}
コード例 #4
0
int main (int argc, char *argv[])
{
    int ret,errs = 0;
    char *src, *sendrec;
    int bufsize = BUFSIZE;

    int myrank, nprocs;
    int i;
    MPI_Status status;

    int small_non_contig_struct_count = 3;
    int small_non_contig_struct_blocklens[] = {1, 1, 1};
    MPI_Aint small_non_contig_struct_disps[] = {0, 2, 4};
    MPI_Datatype small_non_contig_struct_types[] = {MPI_CHAR, MPI_CHAR,MPI_CHAR};
    MPI_Datatype small_non_contig_struct_type;

    int contig_indexed_count = 3;
    int contig_indexed_blocklens[] = {1, 2, 1};
    int contig_indexed_indices[] = {4, 8, 16};
    int contig_indexed_inner_type = MPI_INT;
    int contig_indexed_type;

    MTest_Init( &argc, &argv );
    ret = MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
    ret = MPI_Comm_size(MPI_COMM_WORLD, &nprocs);

    if (nprocs < 2) {
        printf("Need at least 2 procs\n");
        exit(RESFAIL_ERROR);
    }

    ret = MPI_Type_struct(small_non_contig_struct_count,
			  small_non_contig_struct_blocklens, 
			  small_non_contig_struct_disps,
			  small_non_contig_struct_types, 
			  &small_non_contig_struct_type);
    if_error("MPI_Type_struct", "small_non_contig_struct_type", ret);

    ret = MPI_Type_commit(&small_non_contig_struct_type);
    if_error("MPI_Type_commit", "small_non_contig_struct_type", ret);

    ret = MPI_Type_indexed(contig_indexed_count,contig_indexed_blocklens, 
			   contig_indexed_indices,contig_indexed_inner_type, 
			   &contig_indexed_type);
    if_error("MPI_Type_indexed", "contig_indexed_type", ret);

    ret = MPI_Type_commit(&contig_indexed_type);
    if_error("MPI_Type_commit", "contig_indexed_type", ret);


    ret = MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &src);

    if (ret != 0) {
        printf("MPI_Alloc_mem src = #%x\n", ret);
        exit(INTERNAL_ERROR);
    }

    ret = MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &sendrec);

    if (ret != 0) {
        printf("MPI_Alloc_mem sendrec buf = #%x\n", ret);
        exit(INTERNAL_ERROR);
    }


    for (i=0; i<bufsize; i++) {
        src[i] = (char) i+1;
    }

    memset(sendrec, 0, bufsize);

    MPI_Barrier(MPI_COMM_WORLD);
    if (myrank == 1) {
        MPI_Send(src, 1, small_non_contig_struct_type, 0, 0xabc,MPI_COMM_WORLD);
    } else {
	MPI_Errhandler_set( MPI_COMM_WORLD, MPI_ERRORS_RETURN );
        ret = MPI_Recv(sendrec, 1, contig_indexed_type, 1, 0xabc,
		       MPI_COMM_WORLD, &status);
	if (ret == MPI_SUCCESS) {
	    printf( "MPI_Recv succeeded with non-matching datatype signature\n" );
	    errs++;
	}
    }

    MPI_Barrier(MPI_COMM_WORLD);

    MPI_Type_free( &small_non_contig_struct_type );
    MPI_Type_free( &contig_indexed_type );

    MPI_Free_mem(src);
    MPI_Free_mem(sendrec);

    MTest_Finalize( errs );
    MPI_Finalize( );

    return 0;
}
コード例 #5
0
ファイル: ife.c プロジェクト: postwait/wackamole
int main (int argc, char *argv[]) {
  int A,B,C,D, i, ic;
  struct interface req, myips[300];
  int state;
#ifdef WIN32
  WSADATA wsadata;

  WSAStartup(WINSOCK_VERSION, &wsadata);
#endif


  i=1;
  if(argc < 2) goto usage_error;
  if(argv[i][0] != '-')
    goto usage_error;
  
  switch(argv[i++][1]) {
  case 'r':
    state=ARPLIST;
    break;
  case 'l':
    state=LIST;
    break;
  case 'a':
    state=ADD;
    strcpy(req.ifname, argv[i++]);
    sscanf(argv[i++], "%d.%d.%d.%d", &A,&B,&C,&D);
    req.ipaddr.s_addr = htonl((A << 24) | (B << 16) | (C << 8) | D);
    sscanf(argv[i++], "%d.%d.%d.%d", &A,&B,&C,&D);
    req.bcast.s_addr = htonl((A << 24) | (B << 16) | (C << 8) | D);
    sscanf(argv[i++], "%d.%d.%d.%d", &A,&B,&C,&D);
    req.netmask.s_addr = htonl((A << 24) | (B << 16) | (C << 8) | D);
    break;
  case 'd':
    state=DELETE;
    sscanf(argv[i++], "%d.%d.%d.%d", &A,&B,&C,&D);
    req.ifname[0] = '\0';
    req.ipaddr.s_addr = htonl((A << 24) | (B << 16) | (C << 8) | D);
    break;
  case 's':
    state=SPOOF;
    strcpy(req.ifname, argv[i++]);
    sscanf(argv[i++], "%d.%d.%d.%d", &A,&B,&C,&D);
    req.ipaddr.s_addr = htonl((A << 24) | (B << 16) | (C << 8) | D);
    sscanf(argv[i++], "%d.%d.%d.%d", &A,&B,&C,&D);
    req.bcast.s_addr = htonl((A << 24) | (B << 16) | (C << 8) | D);
    break;
  usage_error:
  default:
    fprintf(stderr, "%s:\n\tUsage:\n\t\t-l\t\t\t\t\tlist interfaces\n\t\t-a <interface> <ip> <bcast> <netmask>\tAdd this VIP\n\t\t-d <IP>\t\t\t\t\tDelete this VIP\n\t\t-s interface VIP destinationIP\n", argv[0]);
    exit(-1);
  }
  

  if_initialize();
  if(state&ARPLIST) {
    arp_entry *ad, *ac;
    fprintf(stderr, "Sampling and printing local arp-cache\n");
    sample_arp_cache();
    sample_arp_cache();
    ac = ad = fetch_shared_arp_cache();
    while(ad && ad->ip) {
	struct in_addr iad;
	iad.s_addr = ad->ip;
	fprintf(stderr, "\t%s\n", inet_ntoa(iad));
	ad++;
    }
    free(ac);
  }
  if(state&ADD) {
    ic = if_up(&req);
    if(ic) {
      perror("ioctl");
      fprintf(stderr, "%s\n", if_error());
    } else {
      fprintf(stderr, "if_up: %s\t%s", req.ifname, inet_ntoa(req.ipaddr));
      fprintf(stderr, "\t%s", inet_ntoa(req.bcast));
      fprintf(stderr, "\t%s\n", inet_ntoa(req.netmask));
    }
  }
  if(state&DELETE) {
    ic = if_down(&req);
    if(ic)
      fprintf(stderr, "%s\n", if_error());
    else {
      fprintf(stderr, "if_down: %s\t%s", req.ifname, inet_ntoa(req.ipaddr));
      fprintf(stderr, "\t%s", inet_ntoa(req.bcast));
      fprintf(stderr, "\t%s\n", inet_ntoa(req.netmask));
    }
  }
  if(state&SPOOF) {
    ic = if_send_spoof_request(req.ifname,
			       req.ipaddr.s_addr, req.bcast.s_addr, NULL, 5, 0);
    if(ic)
      fprintf(stderr, "%s\n", if_error());
    else {
      fprintf(stderr, "if_spoofed: %s\t%s\n",req.ifname, inet_ntoa(req.ipaddr));
    }
  }
  if(state) {
    ic = if_list_ips(myips, 300);
    fprintf(stderr, "Found %d IPs:\n", ic);
    for(i=0; i<ic; i++) {
      fprintf(stderr, "%s\t[%02x:%02x:%02x:%02x:%02x:%02x]",
	myips[i].ifname,
	myips[i].mac[0], myips[i].mac[1], myips[i].mac[2],
	myips[i].mac[3], myips[i].mac[4], myips[i].mac[5]);
        fprintf(stderr, "\t%s", inet_ntoa(myips[i].ipaddr));
        fprintf(stderr, "\t%s", inet_ntoa(myips[i].bcast));
        fprintf(stderr, "\t%s\n", inet_ntoa(myips[i].netmask));
    }
  }
  return 0;
}