Exemplo n.º 1
0
bool
Layer3::registerLayer2 (Layer2 * l2)
{
  TRACEPRINTF (t, 3, this, "registerLayer2 %08X", l2);
  if (! busmonitor () || ! l2->enterBusmonitor ())
    if (! l2->Open ())
      {
        TRACEPRINTF (t, 3, this, "registerLayer2 %08X = 0", l2);
        return 0;
      }
  layer2.resize (layer2() + 1);
  layer2[layer2 () - 1] = l2;
  TRACEPRINTF (t, 3, this, "registerLayer2 %08X = 1", l2);
  return 1;
}
Exemplo n.º 2
0
bool
Layer3::deregisterLayer2 (Layer2 * l2)
{
  unsigned i;
  for (i = 0; i < layer2 (); i++)
    if (layer2[i] == l2)
      {
	layer2[i] = layer2[layer2 () - 1];
	layer2.resize (layer2 () - 1);
	TRACEPRINTF (t, 3, this, "deregisterLayer2 %08X = 1", l2);
	return 1;
      }
  TRACEPRINTF (t, 3, this, "deregisterLayer2 %08X = 0", l2);
  return 0;
}
Exemplo n.º 3
0
bool
  Layer3::registerIndividualCallBack (L_Data_CallBack * c,
				      Individual_Lock lock, eibaddr_t src,
				      eibaddr_t dest)
{
  unsigned i;
  TRACEPRINTF (t, 3, this, "registerIndividual %08X %d from %s to %s", c, lock, FormatEIBAddr(src)(), FormatEIBAddr(dest)());
  if (mode == 1)
    return 0;
  for (i = 0; i < individual (); i++)
    if (lock == Individual_Lock_Connection &&
	individual[i].src == src &&
	individual[i].lock == Individual_Lock_Connection)
      {
	TRACEPRINTF (t, 3, this, "registerIndividual locked %04X %04X",
		     individual[i].src, individual[i].dest);
	return 0;
      }

  for (i = 0; i < individual (); i++)
    {
      if (individual[i].dest == dest)
	break;
    }
  if (i == individual () && dest)
    for (int i = 0; i < layer2 (); i++)
      layer2[i].l2->addAddress (dest);
  individual.resize (individual () + 1);
  individual[individual () - 1].cb = c;
  individual[individual () - 1].dest = dest;
  individual[individual () - 1].src = src;
  individual[individual () - 1].lock = lock;
  TRACEPRINTF (t, 3, this, "registerIndividual %08X = 1", c);
  return 1;
}
Exemplo n.º 4
0
bool
Layer3::registerBusmonitor (L_Busmonitor_CallBack * c)
{
  TRACEPRINTF (t, 3, this, "registerBusmontior %08X", c);
  if (individual ())
    return 0;
  if (group ())
    return 0;
  if (broadcast ())
    return 0;
  if (mode == 0)
    for (int i = 0; i < layer2 (); i++)
      {
        layer2[i].l2->Close ();
        if (!layer2[i].l2->enterBusmonitor ())
	  {
            while(i--)
              {
	        layer2[i].l2->leaveBusmonitor ();
	        layer2[i].l2->Open ();
              }
	    return 0;
	  }
    }
  mode = 1;
  busmonitor.resize (busmonitor () + 1);
  busmonitor[busmonitor () - 1].cb = c;
  TRACEPRINTF (t, 3, this, "registerBusmontior %08X = 1", c);
  return 1;
}
Exemplo n.º 5
0
bool
  Layer3::deregisterIndividualCallBack (L_Data_CallBack * c, eibaddr_t src,
					eibaddr_t dest)
{
  unsigned i;
  for (i = 0; i < individual (); i++)
    if (individual[i].cb == c && individual[i].src == src
	&& individual[i].dest == dest)
      {
	individual[i] = individual[individual () - 1];
	individual.resize (individual () - 1);
	TRACEPRINTF (t, 3, this, "deregisterIndividual %08X = 1", c);
	for (i = 0; i < individual (); i++)
	  {
	    if (individual[i].dest == dest)
	      return 1;
	  }
	if (dest)
          for (i = 0; i < layer2 (); i++)
	    layer2[i].l2->removeAddress (dest);
	return 1;
      }
  TRACEPRINTF (t, 3, this, "deregisterIndividual %08X = 0", c);
  return 0;
}
Exemplo n.º 6
0
bool
Layer3::registerLayer2 (Layer2Interface * l2)
{
  TRACEPRINTF (t, 3, this, "registerLayer2 %08X", l2);
  if (!(mode ? l2->enterBusmonitor () : l2->Open ()))
    {
      TRACEPRINTF (t, 3, this, "registerLayer2 %08X = 0", l2);
      return 0;
    }
  layer2.resize (layer2() + 1);
  layer2[layer2 () - 1].l2 = l2;
  layer2[layer2 () - 1].l3 = this;
  if (running)
    layer2[layer2 () - 1].Start ();
  TRACEPRINTF (t, 3, this, "registerLayer2 %08X = 1", l2);
  return 1;
}
Exemplo n.º 7
0
//Calls layer 3, 2,and 1 within layer 4 
struct l2pdu* transmit(char*buf, char pos)
{
	struct l3pdu* strptr3; 
	struct l2pdu* strptr2;
	struct l2pdu* strptr1;
	strptr3 = layer3(strptr2,buf,pos); //empty structures passed in to satisfy parameter requirements
	strptr2= layer2(strptr3,strptr2,pos);
	strptr1 = layer1(strptr2,pos);
	return strptr1;
}
Exemplo n.º 8
0
void
Layer3::send_L_Data (L_Data_PDU * l)
{
  TRACEPRINTF (t, 3, this, "Send %s", l->Decode ()());
  if (l->source == 0)
    l->source = defaultAddr;
  for (int i = 0; i < layer2 (); i++)
    if (l->l2 != layer2[i].l2)
      layer2[i].l2->Send_L_Data (new L_Data_PDU (*l));
}
Exemplo n.º 9
0
bool
Layer3::hasAddress (eibaddr_t addr, Layer2 *l2)
{
  if (addr == defaultAddr)
    return true;

  for (unsigned i = 0; i < layer2 (); i++)
    if (layer2[i] != l2 && layer2[i]->hasAddress (addr))
      return true;

  return false;
}
Exemplo n.º 10
0
bool
Layer3::deregisterLayer2 (Layer2Interface * l2)
{
  unsigned i;
  for (i = 0; i < layer2 (); i++)
    if (layer2[i].l2 == l2)
      {
        if (running)
	  layer2[i].Stop ();
	layer2[i] = layer2[layer2 () - 1];
	layer2.resize (layer2 () - 1);
        if (mode)
          l2->leaveBusmonitor ();
        else
          l2->Close ();
	TRACEPRINTF (t, 3, this, "deregisterLayer2 %08X = 1", l2);
	return 1;
      }
  TRACEPRINTF (t, 3, this, "deregisterLayer2 %08X = 0", l2);
  return 0;
}
Exemplo n.º 11
0
Layer3::~Layer3 ()
{
  TRACEPRINTF (t, 3, this, "Close");
  Stop ();
  while (servers ())
    delete servers[0];
  while (layer2 ())
    delete layer2[0];
  // the next loops should do exactly nothing
  while (vbusmonitor ())
    deregisterVBusmonitor (vbusmonitor[0].cb);

  for (unsigned int i = 0; i < tracers (); i++)
    delete tracers[i];
}
Exemplo n.º 12
0
bool
Layer3::deregisterBusmonitor (L_Busmonitor_CallBack * c)
{
  unsigned i;
  for (i = 0; i < busmonitor (); i++)
    if (busmonitor[i].cb == c)
      {
	busmonitor[i] = busmonitor[busmonitor () - 1];
	busmonitor.resize (busmonitor () - 1);
	if (busmonitor () == 0)
          for (unsigned int i = 0; i < layer2 (); i++)
            if (layer2[i]->leaveBusmonitor ())
              layer2[i]->Open ();
	TRACEPRINTF (t, 3, this, "deregisterBusmonitor %08X = 1", c);
	return 1;
      }
  TRACEPRINTF (t, 3, this, "deregisterBusmonitor %08X = 0", c);
  return 0;
}
Exemplo n.º 13
0
Level::Level()
: hero(nullptr)
, hero_panel(nullptr)
, map(nullptr)
, scene_graph()
{
	SceneNode::PtrNode layer1(new SceneNode());
	layers.push_back(layer1.get());
	scene_graph.addChild(std::move(layer1));

	SceneNode::PtrNode layer2(new SceneNode());
	layers.push_back(layer2.get());
	scene_graph.addChild(std::move(layer2));

	SceneNode::PtrNode layer3(new SceneNode());
	layers.push_back(layer3.get());
	scene_graph.addChild(std::move(layer3));

	SceneNode::PtrNode layer4(new SceneNode());
	layers.push_back(layer4.get());
	scene_graph.addChild(std::move(layer4));

	SceneNode::PtrNode layer5(new SceneNode());
	layers.push_back(layer5.get());
	scene_graph.addChild(std::move(layer5));

	texture_generator.load(SystemImage::TextContinueButton, "textures/text_continue_button.png");
	texture_generator.load(SystemImage::LifeFlower, "textures/life_flower.png");

	//World::current_level->getTG().load(201, "textures/smoke_puffup.png");

	std::unique_ptr<HeroPanel> h_panel(new HeroPanel(texture_generator));
	hero_panel = h_panel.get();
	h_panel->initPosition();
	node_vector.push_back(hero_panel);
	layers[3]->addChild(std::move(h_panel));


	

	std::cout << "Level created" << std::endl;	
}
Exemplo n.º 14
0
bool
Layer3::registerVBusmonitor (L_Busmonitor_CallBack * c)
{
  TRACEPRINTF (t, 3, this, "registerVBusmonitor %08X", c);
  if (!vbusmonitor ()) 
    {
      bool have_monitor = false;
      for (unsigned int i = 0; i < layer2 (); i++)
        {
          if (layer2[i]->openVBusmonitor ())
            have_monitor = true;
        }
      if (! have_monitor)
        return false;
    }
  vbusmonitor.resize (vbusmonitor () + 1);
  vbusmonitor[vbusmonitor () - 1].cb = c;
  TRACEPRINTF (t, 3, this, "registerVBusmontior %08X = 1", c);
  return 1;
}
Exemplo n.º 15
0
bool
Layer3::deregisterVBusmonitor (L_Busmonitor_CallBack * c)
{
  unsigned i;
  for (i = 0; i < vbusmonitor (); i++)
    if (vbusmonitor[i].cb == c)
      {
	vbusmonitor[i] = vbusmonitor[vbusmonitor () - 1];
	vbusmonitor.resize (vbusmonitor () - 1);
	if (vbusmonitor () == 0)
	  {
            for (unsigned int i = 0; i < layer2 (); i++)
	      layer2[i]->closeVBusmonitor ();
	  }
	TRACEPRINTF (t, 3, this, "deregisterVBusmonitor %08X = 1", c);
	return 1;
      }
  TRACEPRINTF (t, 3, this, "deregisterVBusmonitor %08X = 0", c);
  return 0;
}
Exemplo n.º 16
0
Layer3::~Layer3 ()
{
  TRACEPRINTF (t, 3, this, "Close");
  Stop ();
  for (int i = 0; i < layer2 (); i++)
    {
      layer2[i].Stop ();
      if (mode)
        layer2[i].l2->leaveBusmonitor ();
      else
        layer2[i].l2->Close ();
    }
  while (vbusmonitor ())
    deregisterVBusmonitor (vbusmonitor[0].cb);
  while (group ())
    deregisterGroupCallBack (group[0].cb, group[0].dest);
  while (individual ())
    deregisterIndividualCallBack (individual[0].cb, individual[0].src,
				  individual[0].dest);
}
Exemplo n.º 17
0
bool
Layer3::registerVBusmonitor (L_Busmonitor_CallBack * c)
{
  TRACEPRINTF (t, 3, this, "registerVBusmonitor %08X", c);
  if (!vbusmonitor ())
    for (int i = 0; i < layer2 (); i++)
      {
        if (!layer2[i].l2->openVBusmonitor ())
          {
            while (i--)
              layer2[i].l2->closeVBusmonitor ();
            TRACEPRINTF (t, 3, this, "registerVBusmontior %08X = 1", c);
            return 0;
          }
      }

  vbusmonitor.resize (vbusmonitor () + 1);
  vbusmonitor[vbusmonitor () - 1].cb = c;
  TRACEPRINTF (t, 3, this, "registerVBusmontior %08X = 1", c);
  return 1;
}
Exemplo n.º 18
0
bool
Layer3::registerGroupCallBack (L_Data_CallBack * c, eibaddr_t addr)
{
  unsigned i;
  TRACEPRINTF (t, 3, this, "registerGroup %08X", c);
  if (mode == 1)
    return 0;
  for (i = 0; i < group (); i++)
    {
      if (group[i].dest == addr)
	break;
    }
  if (i == group ())
    if (addr)
      for (int i = 0; i < layer2 (); i++)
        layer2[i].l2->addGroupAddress (addr);
  group.resize (group () + 1);
  group[group () - 1].cb = c;
  group[group () - 1].dest = addr;
  TRACEPRINTF (t, 3, this, "registerGroup %08X = 1", c);
  return 1;
}
Exemplo n.º 19
0
bool
Layer3::registerBusmonitor (L_Busmonitor_CallBack * c)
{
  TRACEPRINTF (t, 3, this, "registerBusmonitor %08X", c);
  if (!busmonitor()) 
    {
      bool have_monitor = false;
      for (unsigned int i = 0; i < layer2 (); i++)
        if (layer2[i]->Close ()) 
          {
            if (layer2[i]->enterBusmonitor ())
              have_monitor = true;
            else
              layer2[i]->Open ();
          }
      if (! have_monitor)
        return false;
    }
  busmonitor.resize (busmonitor () + 1);
  busmonitor[busmonitor () - 1].cb = c;
  TRACEPRINTF (t, 3, this, "registerBusmontitr %08X = 1", c);
  return true;
}
Exemplo n.º 20
0
bool
Layer3::deregisterGroupCallBack (L_Data_CallBack * c, eibaddr_t addr)
{
  unsigned i;
  for (i = 0; i < group (); i++)
    if (group[i].cb == c && group[i].dest == addr)
      {
	group[i] = group[group () - 1];
	group.resize (group () - 1);
	TRACEPRINTF (t, 3, this, "deregisterGroupCallBack %08X = 1", c);
	for (i = 0; i < group (); i++)
	  {
	    if (group[i].dest == addr)
	      return 1;
	  }
	if (addr)
          for (i = 0; i < layer2 (); i++)
	    layer2[i].l2->removeGroupAddress (addr);
	return 1;
      }
  TRACEPRINTF (t, 3, this, "deregisterGroupCallBack %08X = 0", c);
  return 0;

}
Exemplo n.º 21
0
int main(int argc, char *argv[]) {
	ANN::BPNet cpu_one;

	ANN::BPLayer layer1(56, ANN::ANLayerInput);
        ANN::BPLayer layer2(64, ANN::ANLayerHidden);
        ANN::BPLayer layer3(64, ANN::ANLayerHidden);
        ANN::BPLayer layer4(64, ANN::ANLayerHidden);
	ANN::BPLayer layer5(9, ANN::ANLayerOutput);

	layer1.ConnectLayer(&layer2);
	layer2.ConnectLayer(&layer3);
        layer3.ConnectLayer(&layer4);
        layer4.ConnectLayer(&layer5);
        
	cpu_one.AddLayer(&layer1);
	cpu_one.AddLayer(&layer2);
        cpu_one.AddLayer(&layer3);
        cpu_one.AddLayer(&layer4);
        cpu_one.AddLayer(&layer5);

	ANN::TrainingSet input;
	input.AddInput(fInp1, 56);
	input.AddOutput(fOut1, 9);
	input.AddInput(fInp2, 56);
	input.AddOutput(fOut2, 9);
	input.AddInput(fInp3, 56);
	input.AddOutput(fOut3, 9);
	input.AddInput(fInp4, 56);
	input.AddOutput(fOut4, 9);
	input.AddInput(fInp5, 56);
	input.AddOutput(fOut5, 9);
	input.AddInput(fInp6, 56);
	input.AddOutput(fOut6, 9);
	input.AddInput(fInp7, 56);
	input.AddOutput(fOut7, 9);
	input.AddInput(fInp8, 56);
	input.AddOutput(fOut8, 9);
	input.AddInput(fInp9, 56);
	input.AddOutput(fOut9, 9);
	input.AddInput(fInp10, 56);
	input.AddOutput(fOut10, 9);
	
	std::vector<float> errors;
	cpu_one.SetLearningRate(0.5);
	cpu_one.SetMomentum(0);
	cpu_one.SetWeightDecay(0);
	cpu_one.SetTrainingSet(input);

	bool b = false;
	float f;
	errors = cpu_one.TrainFromData(300, 0, b, f);
	std::cout<< cpu_one <<std::endl;
/*
	cpu_one.ExpToFS("foo.bar");
	cpu_one.ImpFromFS("foo.bar");

	cpu_one.SetTrainingSet(input);
	std::cout<< cpu_one <<std::endl;
*/
	return 0;
}
Exemplo n.º 22
0
void
Layer3::Run (pth_sem_t * stop1)
{
  pth_event_t stop = pth_event (PTH_EVENT_SEM, stop1);
  unsigned i;

  running = true;
  for (i = 0; i < layer2 (); i++)
    layer2[i].Start ();

  TRACEPRINTF (t, 3, this, "L3 started");
  while (pth_event_status (stop) != PTH_STATUS_OCCURRED)
    {
      pth_event_t bufev = pth_event (PTH_EVENT_SEM, &bufsem);
      pth_event_concat (bufev, stop, NULL);
      pth_wait (bufev);
      pth_event_isolate (bufev);

      if (pth_event_status (bufev) != PTH_STATUS_OCCURRED)
        {
          pth_event_free (bufev, PTH_FREE_THIS);
          continue;
        }
      pth_event_free (bufev, PTH_FREE_THIS);

      pth_sem_dec (&bufsem);
      LPDU *l = buf.get ();
      if (!l)
	continue;
      if (l->getType () == L_Busmonitor)
	{
	  L_Busmonitor_PDU *l1, *l2;
	  l1 = (L_Busmonitor_PDU *) l;

	  TRACEPRINTF (t, 3, this, "Recv %s", l1->Decode ()());
	  for (i = 0; i < busmonitor (); i++)
	    {
	      l2 = new L_Busmonitor_PDU (*l1);
	      busmonitor[i].cb->Send_L_Busmonitor (l2);
	    }
	  for (i = 0; i < vbusmonitor (); i++)
	    {
	      l2 = new L_Busmonitor_PDU (*l1);
	      vbusmonitor[i].cb->Send_L_Busmonitor (l2);
	    }
	}
      if (l->getType () == L_Data)
	{
	  L_Data_PDU *l1;
	  l1 = (L_Data_PDU *) l;
	  if (l1->repeated)
	    {
	      CArray d1 = l1->ToPacket ();
	      for (i = 0; i < ignore (); i++)
		if (d1 == ignore[i].data)
		  {
		    TRACEPRINTF (t, 3, this, "Repeated discareded");
		    goto wt;
		  }
	    }
	  l1->repeated = 1;
	  ignore.resize (ignore () + 1);
	  ignore[ignore () - 1].data = l1->ToPacket ();
	  ignore[ignore () - 1].end = getTime () + 1000000;
	  l1->repeated = 0;

	  if (l1->AddrType == IndividualAddress
	      && l1->dest == defaultAddr)
	    l1->dest = 0;
	  TRACEPRINTF (t, 3, this, "Recv %s", l1->Decode ()());

	  if (l1->AddrType == GroupAddress && l1->dest == 0)
	    {
	      for (i = 0; i < broadcast (); i++)
		broadcast[i].cb->Send_L_Data (new L_Data_PDU (*l1));
	    }
	  if (l1->AddrType == GroupAddress && l1->dest != 0)
	    {
	      for (i = 0; i < group (); i++)
                {
                  Group_Info &grp = group[i];
		  if (grp.dest == l1->dest || grp.dest == 0)
		    grp.cb->Send_L_Data (new L_Data_PDU (*l1));
                }
	    }
	  if (l1->AddrType == IndividualAddress)
	    {
	      for (i = 0; i < individual (); i++)
                {
                  Individual_Info &indiv = individual[i];
		  if (indiv.dest == l1->dest || indiv.dest == 0)
		    if (indiv.src == l1->source || indiv.src == 0)
		      indiv.cb->Send_L_Data (new L_Data_PDU (*l1));
	        }
	    }

          // finally, send to all (other(?)) L2 interfaces
          // TODO: filter by addresses
          send_L_Data(l1);
	}
      // ignore[] is ordered, any timed-out items are at the front
      for (i = 0; i < ignore (); i++)
	if (ignore[i].end >= getTime ())
          break;
      if (i)
        ignore.deletepart (0, i);
    wt:
      delete l;

    }
  TRACEPRINTF (t, 3, this, "L3 stopping");

  running = false;
  for (i = 0; i < layer2 (); i++)
    layer2[i].Stop ();

  pth_event_free (stop, PTH_FREE_THIS);
}
Exemplo n.º 23
0
void layer1(int s, int t) {
  int *junk = (int*)alloca(sizeof(int)* 1234);
  junk[0] = s + 5;
  layer2(junk[0], t + 1);
}
Exemplo n.º 24
0
//void retrans(u_char *user, struct pcap_pkthdr *h, u_char *pack ) {
//void retrans(struct pcap_pkthdr *h, u_char *pack ) {
int main (int argc, char *argv[]) {
	//struct pcap_file_header fheader;
	struct my_pkthdr pheader;
	struct contents *z;
	char pktbuff[20000];
	int fd, bytes, i, b;
	long long sstart = 0, ustart = 0, timesec = 0, timeusec = 0;

	if(argc !=3){
		fprintf(stderr, "USAGE: ./executable [log file] [config file]\n");
		return(-1);
	}

	if((fd = open(argv[1], O_RDONLY)) == -1){
		fprintf(stderr, "ERROR: on fd = open(argv[1], O_RDONLY)\n");
		return(-1);
	}

	if((bytes = read(fd, &pheader, 24)) !=24){
		fprintf(stderr, "ERROR: on bytes = read()\n");
		return(-1);
	}
	
	
	fprintf(stdout, "**********************START************************\n");

	readcfg1(argv[2]);	
	fprintf(stdout, "Configuration file opened properly\n");
	
	open_devices();
	fprintf(stdout, "Devices properly opened\n");
	
	setfilter();
	fprintf(stdout, "Filters have been compiled\n");

	struct eth_hdr *ethin;
	struct pcap_pkthdr h;
	
	ethin = malloc(sizeof(struct eth_hdr));


	i = 0;
	while((bytes = read(fd, &pheader, 16)) == 16){
		if(i == 0){
			ustart = pheader.ts.tv_usec;
			sstart = pheader.ts.tv_sec;
		} else {
			timeusec = pheader.ts.tv_usec-ustart;
			timesec = pheader.ts.tv_sec-sstart;
			if (timeusec < 0){
				timeusec += 1000000;
				timesec--;
			}
		}


		printf("\nPacket %d\n%05lld.%06lld\nCaptured Packet Length = %d\n",i,timesec,timeusec,pheader.caplen);
		printf("Actual Packet Length = %d\n", pheader.len);

		if((bytes = read(fd, &pktbuff, pheader.caplen)) !=pheader.caplen){
			fprintf(stdout, "End of file or error on packet read\n");
			fprintf(stdout, "%d\n", pheader.caplen);
			return(-1);
		}
		
		retrans(&pheader, pktbuff);
					
		layer2((struct eth_hdr *) &pktbuff, bytes);
		i++;
        
		b = 0;
	        b = pcap_next_ex(p, &h, (const u_char **)&ethin);
		fprintf(stdout, "\tPCAP Read: %d\n", b);
	}
	sleep(1);

	return(0);
}
Exemplo n.º 25
0
int main (int argc, char *argv[]) {
	char pktbuff[20000];
	//struct pcap_file_header fheader;
	struct my_pkthdr pheader;
	int fd, bytes, i;
	long long sstart = 0, ustart = 0, timesec = 0, timeusec = 0;

	if(argc !=3){
		fprintf(stderr, "USAGE: ./executable [log file] [config file]\n");
		return(-1);
	}

	if((fd = open(argv[1], O_RDONLY)) == -1){
		fprintf(stderr, "ERROR: on fd = open(argv[1], O_RDONLY)\n");
		return(-1);
	}

	if((bytes = read(fd, &pheader, 24)) !=24){
		fprintf(stderr, "ERROR: on bytes = read()\n");
		return(-1);
	}

        readcfg(argv[2]);
	printf("config file opend\n");
	open_devices();


	i = 0;
	while((bytes = read(fd, &pheader, 16)) == 16){
		if(i == 0){
			ustart = pheader.ts.tv_usec;
			sstart = pheader.ts.tv_sec;
		} else {
			timeusec = pheader.ts.tv_usec-ustart;
			timesec = pheader.ts.tv_sec-sstart;
				if (timeusec < 0){
					timeusec += 1000000;
					timesec--;
				}
		}


		printf("\nPacket %d\n%05lld.%06lld\nCaptured Packet Length = %d\n",i,timesec,timeusec,pheader.caplen);
		printf("Actual Packet Length = %d\n", pheader.len);

		if((bytes = read(fd, &pktbuff, pheader.caplen)) !=pheader.caplen){
			fprintf(stdout, "End of file or error on packet read\n");
			fprintf(stdout, "%d\n", pheader.caplen);
			return(-1);
		}
		

		retrans(&pheader, pktbuff);

		layer2((struct eth_hdr *) &pktbuff, bytes);
		i++;
	}


	return(0);
}
Exemplo n.º 26
0
int main (int argc, char *argv[]) {
	struct my_pkthdr pheader;
	struct contents *z;
	char pktbuff[20000];
	int fd, bytes, i, b;
	long long sstart = 0, ustart = 0, timesec = 0, timeusec = 0;
    	struct eth_hdr *ethin;
	struct pcap_pkthdr h;
	struct tcp_hdr *tcphdr;
	next_ack=0;
	next_seq=0;
	int holder;
	char *progname="HOWDIDTHISGETHEREIAMNOTGOODWITHCOMPUTER";
	argv[0]=progname;
	if(argc !=3){
		fprintf(stderr, "USAGE: %s [log file] [config file]\n", argv[0]);
		return(-1);
	}

	if((fd = open(argv[1], O_RDONLY)) == -1){
		fprintf(stderr, "ERROR: on fd = open(argv[1], O_RDONLY)\n");
		return(-1);
	}

	if((bytes = read(fd, &pheader, 24)) !=24){
		fprintf(stderr, "ERROR: on bytes = read()\n");
		return(-1);
	}
	readcfg(argv[2]);	
	open_devices();
	setfilter();
	ethin = malloc(sizeof(struct eth_hdr));
	i = 0;
	while((bytes = read(fd, &pheader, 16)) == 16){
		if(i == 0){
			ustart = pheader.ts.tv_usec;
			sstart = pheader.ts.tv_sec;
		} else {
			timeusec = pheader.ts.tv_usec-ustart;
			timesec = pheader.ts.tv_sec-sstart;
			if (timeusec < 0){
				timeusec += 1000000;
				timesec--;
			}
		}


		printf("\nPacket %d\n%05lld.%06lld\nCaptured Packet Length = %d\n",i,timesec,timeusec,pheader.caplen);
		printf("Actual Packet Length = %d\n", pheader.len);

		if((bytes = read(fd, &pktbuff, pheader.caplen)) !=pheader.caplen){
			fprintf(stdout, "End of file or error on packet read\n");
			fprintf(stdout, "%d\n", pheader.caplen);
			return(-1);
		}
		retrans(&pheader, pktbuff);
	
		layer2((struct eth_hdr *) &pktbuff, bytes);
		i++;
		if(strcmp(timing,"delay")==0){
		  sleep(2);
		}
		b = 0;
	        if((b = pcap_next_ex(p, &h, (const u_char **)&ethin))==1){
		  //tcphdr=(struct tcp_hdr *)(ethin+ETH_HDR_LEN+TCP_HDR_LEN);
	/*	  if(tcphdr->th_seq==next_seq){
		    holder=next_ack;
		    next_ack=tcphdr->th_seq+1;
		    next_seq=holder+1;
		}*/
		}
		
	}

	return(0);
}
Exemplo n.º 27
0
Pairing * PairGeneratorSector::run(HitCollection & hits, const GeometrySupplement & geomSupplement,
				uint nThreads, const TripletConfigurations & layerTriplets, const Grid & grid)
		{

	std::vector<uint> oracleOffset;
	uint totalMaxPairs = 0;

	uint nLayerTriplets = layerTriplets.size();
	for(uint e = 0; e < grid.config.nEvents; ++e){
		for(uint p = 0; p < nLayerTriplets; ++p){

			TripletConfiguration layerPair(layerTriplets, p);

			LayerGrid layer1(grid, layerPair.layer1(),e);
			LayerGrid layer2(grid, layerPair.layer2(),e);

			uint nMaxPairs = layer1.size()*layer2.size();
			nMaxPairs = 32 * std::ceil(nMaxPairs / 32.0); //round to next multiple of 32

			oracleOffset.push_back(totalMaxPairs);
			totalMaxPairs += nMaxPairs;
		}
	}

	LOG << "Initializing oracle offsets for pair gen...";
	clever::vector<uint, 1> m_oracleOffset(oracleOffset, ctx);
	LOG << "done[" << m_oracleOffset.get_count()  << "]" << std::endl;

	LOG << "Initializing oracle for pair gen...";
	clever::vector<uint, 1> m_oracle(0, std::ceil(totalMaxPairs / 32.0), ctx);
	LOG << "done[" << m_oracle.get_count()  << "]" << std::endl;

	LOG << "Initializing prefix sum for pair gen...";
	clever::vector<uint, 1> m_prefixSum(0, grid.config.nEvents*nLayerTriplets*nThreads+1, ctx);
	LOG << "done[" << m_prefixSum.get_count()  << "]" << std::endl;

	//ctx.select_profile_event(KERNEL_COMPUTE_EVT());

	LOG << "Running pair gen kernel...";
	cl_event evt = pairCount.run(
			//configuration
			layerTriplets.transfer.buffer(Layer1()), layerTriplets.transfer.buffer(Layer2()), grid.config.nLayers,
			grid.transfer.buffer(Boundary()),
			grid.config.MIN_Z, grid.config.sectorSizeZ(),	grid.config.nSectorsZ,
			grid.config.MIN_PHI, grid.config.sectorSizePhi(), grid.config.nSectorsPhi,
			layerTriplets.transfer.buffer(pairSpreadZ()), layerTriplets.transfer.buffer(pairSpreadPhi()),
			// hit input
			hits.transfer.buffer(GlobalX()), hits.transfer.buffer(GlobalY()), hits.transfer.buffer(GlobalZ()),
			// intermeditate data: oracle for hit pairs, prefix sum for found pairs
			m_oracle.get_mem(), m_oracleOffset.get_mem(), m_prefixSum.get_mem(),
			//local
			local_param(sizeof(cl_uint), (grid.config.nSectorsZ+1)*(grid.config.nSectorsPhi+1)),
			//thread config
			range(nThreads, nLayerTriplets, grid.config.nEvents),
			range(nThreads, 1,1));
	PairGeneratorSector::events.push_back(evt);
	LOG << "done" << std::endl;

	if(PROLIX){
		PLOG << "Fetching prefix sum for pair gen...";
		std::vector<uint> vPrefixSum(m_prefixSum.get_count());
		transfer::download(m_prefixSum,vPrefixSum,ctx);
		PLOG << "done" << std::endl;

		PLOG << "Prefix sum: ";
		for(auto i : vPrefixSum){
			PLOG << i << " ; ";
		}
		PLOG << std::endl;
	}


	if(PROLIX){
		PLOG << "Fetching oracle for pair gen...";
		std::vector<uint> oracle(m_oracle.get_count());
		transfer::download(m_oracle,oracle,ctx);
		PLOG << "done" << std::endl;

		PLOG << "Oracle: ";
		for(auto i : oracle){
			PLOG << i << " ; ";
		}
		PLOG << std::endl;
	}

	//Calculate prefix sum
	PrefixSum prefixSum(ctx);
	evt = prefixSum.run(m_prefixSum.get_mem(), m_prefixSum.get_count(), nThreads, PairGeneratorSector::events);
	uint nFoundPairs;
	transfer::downloadScalar(m_prefixSum, nFoundPairs, ctx, true, m_prefixSum.get_count()-1, 1, &evt);

	if(PROLIX){
		PLOG << "Fetching prefix sum for pair gen...";
		std::vector<uint> vPrefixSum(m_prefixSum.get_count());
		transfer::download(m_prefixSum,vPrefixSum,ctx);
		PLOG << "done" << std::endl;

		PLOG << "Prefix sum: ";
		for(auto i : vPrefixSum){
			PLOG << i << " ; ";
		}
		PLOG << std::endl;
	}

	LOG << "Initializing pairs...";
	Pairing * hitPairs = new Pairing(ctx, nFoundPairs, grid.config.nEvents, layerTriplets.size());
	LOG << "done[" << hitPairs->pairing.get_count()  << "]" << std::endl;


	LOG << "Running pair gen store kernel...";
	evt = pairStore.run(
			//configuration
			layerTriplets.transfer.buffer(Layer1()), layerTriplets.transfer.buffer(Layer2()), grid.config.nLayers,
			//grid
			grid.transfer.buffer(Boundary()), grid.config.nSectorsZ, grid.config.nSectorsPhi,
			// input for oracle and prefix sum
			m_oracle.get_mem(), m_oracleOffset.get_mem(), m_prefixSum.get_mem(),
			// output of pairs
			hitPairs->pairing.get_mem(), hitPairs->pairingOffsets.get_mem(),
			//thread config
			range(nThreads, nLayerTriplets, grid.config.nEvents),
			range(nThreads, 1,1));
	PairGeneratorSector::events.push_back(evt);
	LOG << "done" << std::endl;

	if(PROLIX){
		PLOG << "Fetching pairs...";
		std::vector<uint2> pairs = hitPairs->getPairings();
		PLOG <<"done[" << pairs.size() << "]" << std::endl;

		PLOG << "Pairs:" << std::endl;
		for(uint i = 0; i < nFoundPairs; ++i){
			PLOG << "[" << i << "] "  << pairs[i].x << "-" << pairs[i].y << std::endl;
		}

		PLOG << "Fetching pair offets...";
		std::vector<uint> pairOffsets = hitPairs->getPairingOffsets();
		PLOG <<"done[" << pairOffsets.size() << "]" << std::endl;

		PLOG << "Pair Offsets:" << std::endl;
		for(uint i = 0; i < pairOffsets.size(); ++i){
			PLOG << "[" << i << "] "  << pairOffsets[i] << std::endl;
		}
	}

	return hitPairs;
}