[Javanetsim-cvs] javaNetSim/core/protocolsuite/tcp_ip TCP_packet.java,1.1,1.2 Tcp.java,1.42,1.43
Status: Beta
Brought to you by:
darkkey
From: gift <gi...@us...> - 2006-02-25 01:12:05
|
Update of /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10986/core/protocolsuite/tcp_ip Modified Files: TCP_packet.java Tcp.java Log Message: vvv Index: Tcp.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/Tcp.java,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** Tcp.java 24 Feb 2006 17:16:00 -0000 1.42 --- Tcp.java 25 Feb 2006 01:11:54 -0000 1.43 *************** *** 129,132 **** --- 129,133 ---- /*end of statistic block*/ public int seq_number=0; + public int last_passed=-1; //last sequence number value of the segment that has been passed upstairs /*database*/ *************** *** 159,162 **** --- 160,172 ---- */ public Hashtable SegmentsToResend = new Hashtable(); + + /** + * Contains segments that have come in non consequential order + * maximun 200 segments can be stored + * <p>Key: Sequence number of the segment</p> + * <p>Object: The copy of the segment we have received</p> + * <p>Aim of this hashtable: necessarily to have, to pass segments upstairs in proper order</p> + */ + public Hashtable OutputBuffer = new Hashtable(200); /*end of database*/ *************** *** 232,235 **** --- 242,246 ---- this.sent_duplicates=0; this.seq_number=0; + this.last_passed=-1; if (!this.ReceivedSegments.isEmpty()) this.ReceivedSegments.removeAllElements(); *************** *** 284,287 **** --- 295,322 ---- } + try { + if (!this.OutputBuffer.isEmpty()) + { + /*Set set = this.OutputBuffer.keySet(); + Iterator itr = set.iterator(); + while (itr.hasNext()) + { + this.OutputBuffer.remove(itr.next()); + }*/ + Enumeration HTkeys; + Integer curkey; + HTkeys = OutputBuffer.keys(); + while (HTkeys.hasMoreElements()) + { + curkey= (Integer) HTkeys.nextElement(); + this.OutputBuffer.remove(curkey); + } + } + + } catch(Exception e) + { + System.out.println("TCP Element.OutputBuffer reset error: " + e.toString()); + } + this.isFIN_sent=false; this.isFIN_confirmed=false; *************** *** 296,299 **** --- 331,335 ---- private ProtocolStack mParentStack; private int window_size=25; + // private int total_received=0; // private int total_sent=0; *************** *** 1068,1072 **** public void receiveTCPPacket(TCP_packet inPacket) throws TransportLayerPortException, TransportLayerException, LowLinkException, CommunicationException { ! System.out.println(mParentStack.getHostName() + ":" + " !!!!!!!!!! SEQ_numb==" + inPacket.get_sequence_number()); //test: check sum of TCP packet --- 1104,1112 ---- public void receiveTCPPacket(TCP_packet inPacket) throws TransportLayerPortException, TransportLayerException, LowLinkException, CommunicationException { ! ! String sd=mParentStack.getHostName(); ! if (inPacket.get_ACK_flag()) sd=sd+" ACK-packet"; ! sd=sd + ":" + " !!!!!!!!!! SEQ_numb==" + inPacket.get_sequence_number(); ! System.out.println(sd); //test: check sum of TCP packet *************** *** 1084,1088 **** Elm=(TCP_HashTableElement)PortTable.get(inPacket.get_destPort()); ! System.out.println(Elm.PortStatus); switch(Elm.PortStatus) --- 1124,1128 ---- Elm=(TCP_HashTableElement)PortTable.get(inPacket.get_destPort()); ! //System.out.println(Elm.PortStatus); switch(Elm.PortStatus) *************** *** 1090,1099 **** case 0: //port is free => Error: no application to receive TCP //have to disconnect listener from port ! System.out.println(mParentStack.getHostName() + ":" + " !! 0 SEQ_numb==" + inPacket.get_sequence_number()); throw new TransportLayerPortException("TCP Error: no application listening to port "+inPacket.get_destPort() +" on host \""+ mParentStack.getParentNodeName()+"\"!"); //no break needed ;) case 1: // port is being listened to by a new application. //Check for SYN ! System.out.println(mParentStack.getHostName() + ":" + " !! 1 SEQ_numb==" + inPacket.get_sequence_number()); try{ --- 1130,1139 ---- case 0: //port is free => Error: no application to receive TCP //have to disconnect listener from port ! //System.out.println(mParentStack.getHostName() + ":" + " !! 0 SEQ_numb==" + inPacket.get_sequence_number()); throw new TransportLayerPortException("TCP Error: no application listening to port "+inPacket.get_destPort() +" on host \""+ mParentStack.getParentNodeName()+"\"!"); //no break needed ;) case 1: // port is being listened to by a new application. //Check for SYN ! //System.out.println(mParentStack.getHostName() + ":" + " !! 1 SEQ_numb==" + inPacket.get_sequence_number()); try{ *************** *** 1137,1140 **** --- 1177,1182 ---- listener = (Application)Elm.application; + AddOutputBuffer(Elm, inPacket); + //we are going to send ACK for received segment => adding it to SentACKs System.out.println(mParentStack.getHostName() + ":" + "Server received first SYN: I=" + inPacket.get_sequence_number()); *************** *** 1159,1166 **** case 2: //busy port, let's check whether it's busy by sender ;) ! System.out.println(mParentStack.getHostName() + ":" + " !! 2 SEQ_numb==" + inPacket.get_sequence_number()); if ((Elm.connectedtoIP.equals(inPacket.getSourceIPAddress())) && (Elm.connectedtoPort==inPacket.get_srcPort())) { ! System.out.println(mParentStack.getHostName() + ":" + " !! 3 SEQ_numb==" + inPacket.get_sequence_number()); //now we decompose TCP segment //everything is OK --- 1201,1208 ---- case 2: //busy port, let's check whether it's busy by sender ;) ! //System.out.println(mParentStack.getHostName() + ":" + " !! 2 SEQ_numb==" + inPacket.get_sequence_number()); if ((Elm.connectedtoIP.equals(inPacket.getSourceIPAddress())) && (Elm.connectedtoPort==inPacket.get_srcPort())) { ! //System.out.println(mParentStack.getHostName() + ":" + " !! 3 SEQ_numb==" + inPacket.get_sequence_number()); //now we decompose TCP segment //everything is OK *************** *** 1168,1172 **** if (inPacket.get_SYN_flag()) { ! System.out.println(mParentStack.getHostName() + ":" + " !! 4 SEQ_numb==" + inPacket.get_sequence_number()); try{ /* --- 1210,1214 ---- if (inPacket.get_SYN_flag()) { ! //System.out.println(mParentStack.getHostName() + ":" + " !! 4 SEQ_numb==" + inPacket.get_sequence_number()); try{ /* *************** *** 1186,1190 **** if (!(Elm.ReceivedSegments.contains(chk))) { ! System.out.println(mParentStack.getHostName() + ":" + " !! 5 SEQ_numb==" + inPacket.get_sequence_number()); try{ if (Elm.isServer) --- 1228,1232 ---- if (!(Elm.ReceivedSegments.contains(chk))) { ! //System.out.println(mParentStack.getHostName() + ":" + " !! 5 SEQ_numb==" + inPacket.get_sequence_number()); try{ if (Elm.isServer) *************** *** 1194,1198 **** } else TCPsetTimer(Elm, 5); }catch(NullPointerException e){ ! System.out.println(mParentStack.getHostName() + ":" + "TCP.java: case 2 - 1162 " + e.toString()); } --- 1236,1240 ---- } else TCPsetTimer(Elm, 5); }catch(NullPointerException e){ ! //System.out.println(mParentStack.getHostName() + ":" + "TCP.java: case 2 - 1162 " + e.toString()); } *************** *** 1232,1236 **** Application listener; listener = (Application)Elm.application; ! try{ --- 1274,1280 ---- Application listener; listener = (Application)Elm.application; ! ! AddOutputBuffer(Elm, inPacket); ! try{ *************** *** 1287,1291 **** //NOT SYN-segment //check for FIN ! System.out.println(mParentStack.getHostName() + ":" + " !! 6 SEQ_numb==" + inPacket.get_sequence_number()); try{ if (inPacket.get_FIN_flag()) --- 1331,1335 ---- //NOT SYN-segment //check for FIN ! //System.out.println(mParentStack.getHostName() + ":" + " !! 6 SEQ_numb==" + inPacket.get_sequence_number()); try{ if (inPacket.get_FIN_flag()) *************** *** 1296,1302 **** Integer chk = (Integer)inPacket.get_sequence_number(); if (!(Elm.ReceivedSegments.contains(chk))) ! { ! ! if (Elm.isServer) { --- 1340,1344 ---- Integer chk = (Integer)inPacket.get_sequence_number(); if (!(Elm.ReceivedSegments.contains(chk))) ! { if (Elm.isServer) { *************** *** 1346,1350 **** listener = (Application)Elm.application; //Elm.isFIN_sent=true; - will be set in "sendTCPSegment" ! //we are going to send ACK for received segment => adding it to SentACKs System.out.println(mParentStack.getHostName() + ":" + "FIN-packet FIN not sent, BEFORE: I=" + inPacket.get_sequence_number()); --- 1388,1392 ---- listener = (Application)Elm.application; //Elm.isFIN_sent=true; - will be set in "sendTCPSegment" ! AddOutputBuffer(Elm, inPacket); //we are going to send ACK for received segment => adding it to SentACKs System.out.println(mParentStack.getHostName() + ":" + "FIN-packet FIN not sent, BEFORE: I=" + inPacket.get_sequence_number()); *************** *** 1367,1371 **** Elm.isFIN_confirmed=true; int ack_num=chk+1; ! //we are going to send ACK for received segment => adding it to SentACKs System.out.println(mParentStack.getHostName() + ":" + "FIN-packet FIN sent, BEFORE: I=" + inPacket.get_sequence_number()); --- 1409,1413 ---- Elm.isFIN_confirmed=true; int ack_num=chk+1; ! AddOutputBuffer(Elm, inPacket); //we are going to send ACK for received segment => adding it to SentACKs System.out.println(mParentStack.getHostName() + ":" + "FIN-packet FIN sent, BEFORE: I=" + inPacket.get_sequence_number()); *************** *** 1386,1390 **** Application listener; listener = (Application)Elm.application; int ack_num=chk+1; ! //we are going to send ACK for received segment => adding it to SentACKs System.out.println(mParentStack.getHostName() + ":" + " FIN-receiver, BEFORE: I=" + inPacket.get_sequence_number()); --- 1428,1432 ---- Application listener; listener = (Application)Elm.application; int ack_num=chk+1; ! AddOutputBuffer(Elm, inPacket); //we are going to send ACK for received segment => adding it to SentACKs System.out.println(mParentStack.getHostName() + ":" + " FIN-receiver, BEFORE: I=" + inPacket.get_sequence_number()); *************** *** 1468,1471 **** --- 1510,1514 ---- Elm.ReceivedSegments.addElement(chk); //adding seq_number that we have received + AddOutputBuffer(Elm, inPacket); if (inPacket.get_ACK_flag()) *************** *** 1546,1550 **** // if (Elm.received_segments>2) ! listener.RecvData(inPacket.getTCP_message()); } --- 1589,1594 ---- // if (Elm.received_segments>2) ! // listener.RecvData(inPacket.getTCP_message()); ! PassUpstairs(listener, Elm); } *************** *** 1635,1639 **** public TCP_packet getTCPPacket_clone(String inDestIPAddress,String inSourceIPAddress, int indestPort, int insrcPort, String inMessage, boolean flags[], int acknow_num) throws TransportLayerException, LowLinkException { - //check if window is available TCP_HashTableElement Elm; Elm = (TCP_HashTableElement) PortTable.get(insrcPort); --- 1679,1682 ---- *************** *** 1836,1843 **** ResetReceiptCounters(); } - - - } //EOF --- 1879,1947 ---- ResetReceiptCounters(); } + /** + * This method sends to application all consequent segments from OutputBuffer + * @author gift (sourceforge.net user) + * @param listener target application + * @param Elm TCP_Hashtable contains necessary info + * @return Nothing. + * @exception LowLinkException + * @exception TransportLayerException + * @version v0.20 + * @see LowLinkException + * @see TransportLayerException + */ + private void PassUpstairs(Application listener, TCP_HashTableElement Elm) throws LowLinkException, TransportLayerException + { + Integer kkey=Elm.last_passed+1;//=new Integer(Elm.last_passed+1); + + while(Elm.OutputBuffer.containsKey(kkey)) + { + Elm.last_passed=kkey; + TCP_packet Packet=(TCP_packet) Elm.OutputBuffer.remove(kkey); + kkey++; + if((!Packet.get_ACK_flag()) && (!Packet.get_SYN_flag())) + listener.RecvData(Packet.getTCP_message()); + } + + + } + + /** + * This adds segment to OutputBuffer + * @author gift (sourceforge.net user) + * @param Elm TCP_Hashtable contains necessary info + * @param Packet TCP_packet which clone has to be stored in OutputBuffer + * @return Nothing. + * @exception TransportLayerException + * @version v0.20 + * @see TransportLayerException + */ + private void AddOutputBuffer(TCP_HashTableElement Elm, TCP_packet Packet) throws TransportLayerException + { + if (Elm.OutputBuffer.size()==200) + { + throw new TransportLayerException("TCP Error: maximum buffer size reached! Can not keep on receiving TCP segments. Bad connection to: " + Elm.connectedtoIP + ":" + Elm.connectedtoPort + "."); + } else + { + TCP_packet to_buff=new TCP_packet(Packet.getDestIPAddress(), Packet.getSourceIPAddress(), Packet.get_destPort(), Packet.get_srcPort()); + try { + to_buff.setTCP_message(Packet.getTCP_message()); + } catch(TransportLayerException e) {} //will never be thrown from here ;) + + to_buff.set_sequence_number(Packet.get_sequence_number()); + to_buff.set_acknowledgment_number(Packet.get_acknowledgment_number()); + + to_buff.set_URG_flag(Packet.get_URG_flag()); + to_buff.set_ACK_flag(Packet.get_ACK_flag()); + to_buff.set_PSH_flag(Packet.get_PSH_flag()); + to_buff.set_RST_flag(Packet.get_RST_flag()); + to_buff.set_SYN_flag(Packet.get_SYN_flag()); + to_buff.set_FIN_flag(Packet.get_FIN_flag()); + + Elm.OutputBuffer.put(new Integer(Packet.get_sequence_number()), to_buff); + } + } + } //EOF Index: TCP_packet.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/TCP_packet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TCP_packet.java 26 Nov 2005 16:25:38 -0000 1.1 --- TCP_packet.java 25 Feb 2006 01:11:54 -0000 1.2 *************** *** 115,449 **** ! /** ! * This method passes the destination and source addresses into the super class ! * @author gift (sourceforge.net user) ! * @param inDestIPAddress destination IP address ! * @param inSourceIPAddress source IP address ! * @param indestPort destination port number ! * @param insrcPort sorce port number ! * @return Nothing. ! * @version v0.20 ! */ ! public TCP_packet(String inDestIPAddress, String inSourceIPAddress, int indestPort, int insrcPort) ! { ! super (inDestIPAddress); ! this.setSourceIPAddress(inSourceIPAddress); ! TCP_destPort = indestPort; ! TCP_srcPort = insrcPort; ! TCP_MessageLength = HEAD_LENGTH; ! TCP_message = ""; ! } ! /** ! * This method sets the TCP_message and calculates TCP_message length ! * @author gift (sourceforge.net user) ! * @param inTCP_message a string to be set as a TCP message ! * @return Nothing. ! * @exception TransportLayerException If TCP message exceeds maximum size of TCP message. ! * @version v0.20 ! * @see TransportLayerException ! */ ! public void setTCP_message(String inTCP_message) throws TransportLayerException ! { ! int length; ! ! length = HEAD_LENGTH + TCP_message.length(); ! ! if (length <= MAX_LENGTH) { ! TCP_message = inTCP_message; ! TCP_MessageLength = length; ! ! }else ! { ! throw new TransportLayerException("TCP Error: TCP message exceeds maximum size of " + MAX_LENGTH + " bytes."); ! } ! } ! /** ! * This method returns the string describing TCP message ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return the TCP message ! * @version v0.20 ! */ ! public String getTCP_message() ! { ! return TCP_message; ! } ! /** ! * This method returns integer describing TCP message length ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return the length of TCP message. ! * @version v0.20 ! */ ! public int getTCP_MessageLength() ! { ! return TCP_MessageLength; ! } ! /** ! * This if for design and future implementation of TCP_packet ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return Nothing. ! * @version v0.20 ! */ ! public void calculate_Check_Sum() ! { ! } - /** - * This method gets Check_Sum - * can be used for design and future implementation of TCP_packet - * @author gift (sourceforge.net user) - * @param Unused. - * @return CHECK_SUM. - * @version v0.20 - */ - public int getCheck_Sum() - { - return CHECK_SUM; - } ! /** ! * This method gets protocol code (6 for TCP) ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return protocol code PTCL. ! * @version v0.20 ! */ ! public int getProtocolCode() ! { ! return PTCL; ! } ! /** ! * This method gets source port ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return source TCP port number. ! * @version v0.20 ! */ ! public int get_srcPort() ! { ! return TCP_srcPort; ! } ! /** ! * This method gets destination port ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return destination TCP port number. ! * @version v0.20 ! */ ! public int get_destPort() ! { ! return TCP_destPort; ! } ! /** ! * This method sets the sequence number ! * @author gift (sourceforge.net user) ! * @param inSNumb integer to be set as the sequence number ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_sequence_number(int inSNumb) ! { ! sequence_number=inSNumb; ! } ! /** ! * This method sets the acknowledgment number ! * @author gift (sourceforge.net user) ! * @param inACK integer to be set as the acknowledgment number ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_acknowledgment_number(int inACK) ! { ! acknowledgment_number=inACK; ! } ! /** ! * This method gets sequence number ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return TCP sequence number. ! * @version v0.20 ! */ ! public int get_sequence_number() ! { ! return sequence_number; ! } ! /** ! * This method gets acknowledgment number ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return TCP acknowledgment number. ! * @version v0.20 ! */ ! public int get_acknowledgment_number() ! { ! return acknowledgment_number; ! } ! /** ! * This method gets URG flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return URG boolean flag value. ! * @version v0.20 ! */ ! public boolean get_URG_flag() ! { ! return flags[0]; ! } ! /** ! * This method gets ACK flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return ACK boolean flag value. ! * @version v0.20 ! */ ! public boolean get_ACK_flag() ! { ! return flags[1]; ! } ! /** ! * This method gets PSH flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return PSH boolean flag value. ! * @version v0.20 ! */ ! public boolean get_PSH_flag() ! { ! return flags[2]; ! } ! /** ! * This method gets RST flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return RST boolean flag value. ! * @version v0.20 ! */ ! public boolean get_RST_flag() ! { ! return flags[3]; ! } ! /** ! * This method gets SYN flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return SYN boolean flag value. ! * @version v0.20 ! */ ! public boolean get_SYN_flag() ! { ! return flags[4]; ! } ! /** ! * This method gets FIN flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return FIN boolean flag value. ! * @version v0.20 ! */ ! public boolean get_FIN_flag() ! { ! return flags[5]; ! } ! /** ! * This method sets URG flag ! * @author gift (sourceforge.net user) ! * @param inflg_val boolean the value to be set for URG flag. ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_URG_flag(boolean inflg_val) ! { ! flags[0]=inflg_val; ! } ! /** ! * This method sets ACK flag ! * @author gift (sourceforge.net user) ! * @param inflg_val boolean the value to be set for ACK flag. ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_ACK_flag(boolean inflg_val) ! { ! flags[1]=inflg_val; ! } ! /** ! * This method sets PSH flag ! * @author gift (sourceforge.net user) ! * @param inflg_val boolean the value to be set for PSH flag. ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_PSH_flag(boolean inflg_val) ! { ! flags[2]=inflg_val; ! } ! /** ! * This method sets RST flag ! * @author gift (sourceforge.net user) ! * @param inflg_val boolean the value to be set for RST flag. ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_RST_flag(boolean inflg_val) ! { ! flags[3]=inflg_val; ! } ! /** ! * This method sets SYN flag ! * @author gift (sourceforge.net user) ! * @param inflg_val boolean the value to be set for SYN flag. ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_SYN_flag(boolean inflg_val) ! { ! flags[4]=inflg_val; ! } ! /** ! * This method sets FIN flag ! * @author gift (sourceforge.net user) ! * @param inflg_val boolean the value to be set for FIN flag. ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_FIN_flag(boolean inflg_val) ! { ! flags[5]=inflg_val; ! } ! }//EOF --- 115,448 ---- ! /** ! * This method passes the destination and source addresses into the super class ! * @author gift (sourceforge.net user) ! * @param inDestIPAddress destination IP address ! * @param inSourceIPAddress source IP address ! * @param indestPort destination port number ! * @param insrcPort sorce port number ! * @return Nothing. ! * @version v0.20 ! */ ! public TCP_packet(String inDestIPAddress, String inSourceIPAddress, int indestPort, int insrcPort) ! { ! super (inDestIPAddress); ! this.setSourceIPAddress(inSourceIPAddress); ! TCP_destPort = indestPort; ! TCP_srcPort = insrcPort; ! TCP_MessageLength = HEAD_LENGTH; ! TCP_message = ""; ! } ! /** ! * This method sets the TCP_message and calculates TCP_message length ! * @author gift (sourceforge.net user) ! * @param inTCP_message a string to be set as a TCP message ! * @return Nothing. ! * @exception TransportLayerException If TCP message exceeds maximum size of TCP message. ! * @version v0.20 ! * @see TransportLayerException ! */ ! public void setTCP_message(String inTCP_message) throws TransportLayerException { ! int length; ! length = HEAD_LENGTH + TCP_message.length(); ! if (length <= MAX_LENGTH) ! { ! TCP_message = inTCP_message; ! TCP_MessageLength = length; ! }else ! { ! throw new TransportLayerException("TCP Error: TCP message exceeds maximum size of " + MAX_LENGTH + " bytes."); ! } ! } ! /** ! * This method returns the string describing TCP message ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return the TCP message ! * @version v0.20 ! */ + public String getTCP_message() + { + return TCP_message; + } ! /** ! * This method returns integer describing TCP message length ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return the length of TCP message. ! * @version v0.20 ! */ ! public int getTCP_MessageLength() ! { ! return TCP_MessageLength; ! } ! /** ! * This if for design and future implementation of TCP_packet ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return Nothing. ! * @version v0.20 ! */ ! public void calculate_Check_Sum() ! { ! } ! /** ! * This method gets Check_Sum ! * can be used for design and future implementation of TCP_packet ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return CHECK_SUM. ! * @version v0.20 ! */ ! public int getCheck_Sum() ! { ! return CHECK_SUM; ! } ! /** ! * This method gets protocol code (6 for TCP) ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return protocol code PTCL. ! * @version v0.20 ! */ ! public int getProtocolCode() ! { ! return PTCL; ! } ! /** ! * This method gets source port ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return source TCP port number. ! * @version v0.20 ! */ ! public int get_srcPort() ! { ! return TCP_srcPort; ! } ! /** ! * This method gets destination port ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return destination TCP port number. ! * @version v0.20 ! */ ! public int get_destPort() ! { ! return TCP_destPort; ! } ! /** ! * This method sets the sequence number ! * @author gift (sourceforge.net user) ! * @param inSNumb integer to be set as the sequence number ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_sequence_number(int inSNumb) ! { ! sequence_number=inSNumb; ! } ! /** ! * This method sets the acknowledgment number ! * @author gift (sourceforge.net user) ! * @param inACK integer to be set as the acknowledgment number ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_acknowledgment_number(int inACK) ! { ! acknowledgment_number=inACK; ! } ! /** ! * This method gets sequence number ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return TCP sequence number. ! * @version v0.20 ! */ ! public int get_sequence_number() ! { ! return sequence_number; ! } ! /** ! * This method gets acknowledgment number ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return TCP acknowledgment number. ! * @version v0.20 ! */ ! public int get_acknowledgment_number() ! { ! return acknowledgment_number; ! } ! /** ! * This method gets URG flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return URG boolean flag value. ! * @version v0.20 ! */ ! public boolean get_URG_flag() ! { ! return flags[0]; ! } ! /** ! * This method gets ACK flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return ACK boolean flag value. ! * @version v0.20 ! */ ! public boolean get_ACK_flag() ! { ! return flags[1]; ! } ! /** ! * This method gets PSH flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return PSH boolean flag value. ! * @version v0.20 ! */ ! public boolean get_PSH_flag() ! { ! return flags[2]; ! } ! /** ! * This method gets RST flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return RST boolean flag value. ! * @version v0.20 ! */ ! public boolean get_RST_flag() ! { ! return flags[3]; ! } ! /** ! * This method gets SYN flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return SYN boolean flag value. ! * @version v0.20 ! */ ! public boolean get_SYN_flag() ! { ! return flags[4]; ! } ! /** ! * This method gets FIN flag ! * @author gift (sourceforge.net user) ! * @param Unused. ! * @return FIN boolean flag value. ! * @version v0.20 ! */ ! public boolean get_FIN_flag() ! { ! return flags[5]; ! } ! /** ! * This method sets URG flag ! * @author gift (sourceforge.net user) ! * @param inflg_val boolean the value to be set for URG flag. ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_URG_flag(boolean inflg_val) ! { ! flags[0]=inflg_val; ! } ! /** ! * This method sets ACK flag ! * @author gift (sourceforge.net user) ! * @param inflg_val boolean the value to be set for ACK flag. ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_ACK_flag(boolean inflg_val) ! { ! flags[1]=inflg_val; ! } ! /** ! * This method sets PSH flag ! * @author gift (sourceforge.net user) ! * @param inflg_val boolean the value to be set for PSH flag. ! * @return Nothing. ! * @version v0.20 ! */ ! public void set_PSH_flag(boolean inflg_val) ! { ! flags[2]=inflg_val; ! } + /** + * This method sets RST flag + * @author gift (sourceforge.net user) + * @param inflg_val boolean the value to be set for RST flag. + * @return Nothing. + * @version v0.20 + */ + public void set_RST_flag(boolean inflg_val) + { + flags[3]=inflg_val; + } + + /** + * This method sets SYN flag + * @author gift (sourceforge.net user) + * @param inflg_val boolean the value to be set for SYN flag. + * @return Nothing. + * @version v0.20 + */ + public void set_SYN_flag(boolean inflg_val) + { + flags[4]=inflg_val; + } + + /** + * This method sets FIN flag + * @author gift (sourceforge.net user) + * @param inflg_val boolean the value to be set for FIN flag. + * @return Nothing. + * @version v0.20 + */ + public void set_FIN_flag(boolean inflg_val) + { + flags[5]=inflg_val; + } + }//EOF |