void ServerHandshake::encode(ByteBuffer &buffer) { putPID(buffer); putAddress(buffer, address); uint16_t zero = 0; buffer.put(zero); uint8_t localhost_addr[] = {127, 0, 0, 1}; Address localhost = {}; localhost.create4(localhost_addr, 0); uint8_t zero_addr[] = {0, 0, 0, 0}; Address zerohost = {}; zerohost.create4(zero_addr, 0); putAddress(buffer, localhost); // First is localhost for(uint32_t i = 0; i < 9; i++){ putAddress(buffer, zerohost); // Rest 9 are zerohost } buffer.put(ping); buffer.put(pong); buffer.dump(); int a = 0; }
void sfl_receiver_init(SFLReceiver *receiver, SFLAgent *agent) { /* first clear everything */ memset(receiver, 0, sizeof(*receiver)); /* now copy in the parameters */ receiver->agent = agent; /* set defaults */ receiver->sFlowRcvrMaximumDatagramSize = SFL_DEFAULT_DATAGRAM_SIZE; receiver->sFlowRcvrPort = SFL_DEFAULT_COLLECTOR_PORT; #ifdef SFLOW_DO_SOCKET /* initialize the socket address */ initSocket(receiver); #endif /* preset some of the header fields */ receiver->sampleCollector.datap = receiver->sampleCollector.data; putNet32(receiver, SFLDATAGRAM_VERSION5); putAddress(receiver, &agent->myIP); putNet32(receiver, agent->subId); /* prepare to receive the first sample */ resetSampleCollector(receiver); }
void SMI::read(byte HB, byte LB, byte target[]) { start(); //OP code opRead(); putAddress(HB, LB); //send register address readTurnA(); getData(target, 2); }
void SMI::write(byte HB, byte LB, byte target[]) { start(); //OP code opWrite(); putAddress(HB, LB); //send register address writeTurnA(); sendData(target, 2); }
encode() { Packet::encode(); buffer+=ID; putMagic(); putLong(serverId); putAddress(clientAddress,clientPort); putShort(mtuSize); putByte('\0');//server security }
static void sendSample(SFLReceiver *receiver) { /* construct and send out the sample, then reset for the next one... */ SFLAgent *agent = receiver->agent; /* go back and fill in the header */ receiver->sampleCollector.datap = receiver->sampleCollector.data; putNet32(receiver, SFLDATAGRAM_VERSION5); putAddress(receiver, &agent->myIP); putNet32(receiver, agent->subId); putNet32(receiver, ++receiver->sampleCollector.packetSeqNo); putNet32(receiver, (uint32_t)((agent->now - agent->bootTime) * 1000)); putNet32(receiver, receiver->sampleCollector.numSamples); /* send */ if(agent->sendFn) (*agent->sendFn)(agent->magic, agent, receiver, (u_char *)receiver->sampleCollector.data, receiver->sampleCollector.pktlen); else { #ifdef SFLOW_DO_SOCKET /* send it myself */ if (receiver->sFlowRcvrAddress.type == SFLADDRESSTYPE_IP_V6) { uint32_t soclen = sizeof(struct sockaddr_in6); int result = sendto(agent->receiverSocket6, receiver->sampleCollector.data, receiver->sampleCollector.pktlen, 0, (struct sockaddr *)&receiver->receiver6, soclen); if(result == -1 && errno != EINTR) sfl_agent_sysError(agent, "receiver", "IPv6 socket sendto error"); if(result == 0) sfl_agent_error(agent, "receiver", "IPv6 socket sendto returned 0"); } else { uint32_t soclen = sizeof(struct sockaddr_in); int result = sendto(agent->receiverSocket4, receiver->sampleCollector.data, receiver->sampleCollector.pktlen, 0, (struct sockaddr *)&receiver->receiver4, soclen); if(result == -1 && errno != EINTR) sfl_agent_sysError(agent, "receiver", "socket sendto error"); if(result == 0) sfl_agent_error(agent, "receiver", "socket sendto returned 0"); } #endif } /* reset for the next time */ resetSampleCollector(receiver); }
static void putGateway(SFLReceiver *receiver, SFLExtended_gateway *gw) { uint32_t seg; putAddress(receiver, &gw->nexthop); putNet32(receiver, gw->as); putNet32(receiver, gw->src_as); putNet32(receiver, gw->src_peer_as); putNet32(receiver, gw->dst_as_path_segments); for(seg = 0; seg < gw->dst_as_path_segments; seg++) { putNet32(receiver, gw->dst_as_path[seg].type); putNet32(receiver, gw->dst_as_path[seg].length); putNet32_run(receiver, gw->dst_as_path[seg].as.seq, gw->dst_as_path[seg].length); } putNet32(receiver, gw->communities_length); putNet32_run(receiver, gw->communities, gw->communities_length); putNet32(receiver, gw->localpref); }
static void putNat(SFLReceiver *receiver, SFLExtended_nat *nat) { putAddress(receiver, &nat->src); putAddress(receiver, &nat->dst); }
static void putMpls(SFLReceiver *receiver, SFLExtended_mpls *mpls) { putAddress(receiver, &mpls->nextHop); putLabelStack(receiver, &mpls->in_stack); putLabelStack(receiver, &mpls->out_stack); }
static void putRouter(SFLReceiver *receiver, SFLExtended_router *router) { putAddress(receiver, &router->nexthop); putNet32(receiver, router->src_mask); putNet32(receiver, router->dst_mask); }