Wednesday, 25 July 2012

Few Best cartoon from

I came across these great cartoons by Andy Glover.  It is really really Good and so meaningful  !!!! Have a look !!!

How to find out the Version of MySQL and other bundled software of Xampp !

I have been looking for version of MySQL for my xampp installation.

For those, who are not aware, xampp is a bundled package of many software and very easy to install. It has Apache, MySQL, PHP and many more.

You can read more about this in
So i had installed some version of xampp in my PC and completely forgot about it.

I had some issue with MySQL and wanted to know which version it was using , and oh! it was so difficult to find.

After that i came across "Readme" file which has everything written on it.

It is in xampp control panel-> Click on Help-> Now you see "Read Me" in another pop-up window

Click on ReadMe it will give all details of all software installed with xampp.

Something like this :

###### ApacheFriends XAMPP (Basispaket) version 1.7.0 ######

  + Apache 2.2.11
  + MySQL 5.1.30 (Community Server)
  + PHP 5.2.8 + PEAR (Support for PHP 4 has been discontinued)
  + PHP-Switch win32 1.0 (use "php-switch.bat" in the xampp main directory)
  + XAMPP Control Version 2.5 from   
  + XAMPP Security 1.0   
  + SQLite 2.8.15
  + OpenSSL 0.9.8i
  + phpMyAdmin 3.1.1
  + ADOdb 4.990
  + Mercury Mail Transport System v4.52
  + FileZilla FTP Server 0.9.29
  + Webalizer 2.01-10
  + Zend Optimizer 3.3.0
  + eAccelerator für PHP 5.2.8 (but not activated in the php.ini)


Monday, 23 July 2012

Review and installation of OpenKM ( Part 2 )

Few Days back i have started reviewing software for Document management system. I came across few and OpenKM seems the best out of it for our requirements.

We have some departments, some users, and some documents. Internal documents to be managed for each project.

You can read about installation process in my another blog entry

So with this software I was able to do following things :

1) Create Folders, Sub-folders. Rename/Move/Copy/Delete Files and folders.

               if you are creating folder and giving some name to it, It doesn't seem to do anything. We need to click "Enter" after that, to create the folder immediately. The same applies to "Rename" also. If you have to rename the folder. After renaming-> "Enter".

2) We can upload multiple files using import zip option.

              Create zip folder of all your documents and while uploading "tick" import documents from zip file.  Lets say you have folder "ABC" with 10 documents.
then zip "" and upload. In DMS the folder ABC will be created with all 10 files in it.

3) "Delete" permission can be removed for normal users after creating a new profile. In new profile remove "Delete" operation.

4) The activity log will give all details of users logged in and work done by them.

5) Move/Copy/Delete of multiple files are not supported in ver 5.X. It should be supported in Ver 6.X community version.

6) File Versions are created if we check out the file and check in. But the versions cannot be controlled in Ver 5.X , hopefully Ver 6.0 will have some control on it.

         As of now it will go on creating 1.n versions of the file. If you go back and restore lets say 1.2 and make some changes, it will start creating 1.2.1 etc.

7) Application becomes unresponsive sometimes and if you leave it for sometime, it recovers or exit and login again.

8) Recursive Security permission for user and groups are working. The important thing is in Security-> update-> First check the "recursive permission changes" and then do something. It  will only overwrite the existing permission but do not touch the other permissions. Lets say you have 1 person which has read write access to all folders , now if you want to add another one with only read access. First check recursive permission changes and then add new user. The existing user permission will still be the same.


Friday, 20 July 2012

When you should think about changing job ?

This is one question which i came across myself many times in my career. These are few of the questions which are asked my juniors ...rather as a friend or mentor .  In professional space its really very difficult to get good mentors and if you have one you are lucky.

"Should i go for job change, should i look for better opportunity ? Should i settle down here ? What if , yesterday they fire me ?  "

You should know below things as a common practice :

1) If you have been in 1 company for 2-3 years , it is a good time frame.

2) If you are changing company in less than two years, you should think again before changing jobs.

3) Look profitability graph of you company if it is in continuous loss for three years, chances of  "trimming the heads count " will be more.

4) If you join some company, join for at least 2-3 years time frame. If you don't like the company , leave the company within 2-3 months of joining. Don't waste your time or company's time.

5) Money/Salary will always be less, compared to what your friends are getting. So dont think too much about money.

6) If your sole purpose is money , try to jump every 2-3 years to new company.

7) Same company if you are more than 5 years , expect your salary to be less than other new people joining at same rank.

8) MNC's always pay more than Indian companies. But chances of getting fired is more in MNC's than in Indian company.

9) If you are comfortable with job profile and work , dont think about money too much. You will be happy. Spend more time with family. They are essential part of you life.

10) When you join as a fresher, work hard, don't settle in one company. Look for new opportunities, but at least work for 2 years in any company. World is large and one company does not give enough exposure and chance of learning.

I know people who are earning too much, but have too less time to spend even for themselves. They will buy new houses but hardly they stay in them. Life in the end is "Zero". You have nothing when you are born and in the end you take nothing.

So be smart and plan properly your Career.  Corporate jobs are not Government jobs. So be ready for any situation, anytime. Your main aim always should be "Knowledge" . If you have "Knowledge" money will always follow. So pursue "Knowledge" not "Money".

Keep learning and Keep sharing.

Tuesday, 17 July 2012

Prioritizing bugs : Interesting View point but i disagree !

Recently i came across below article by Jean Baptiste , he works in Google ( AOSP, Android Open Source Project ) .

Which says :


When prioritizing bugs, the simplest criteria are the easiest ones to apply. I've seen organizations that needed multiple full-page arrays of rules about how a bug was supposed to be prioritized. I need at most 2 questions to determine the priority of a bug:

-Is this bug blocking another engineer right now? If the answer is "yes", this bug should be fixed immediately. If not, skip to the next question.

-If this was the only bug left, would we delay the release, or would we ship anyway? If the answer is "ship anyway", the bug isn't worth fixing for this release, and should be put as far out of sight as possible. Most probably, such bugs will never get fixed, as there'll almost always be more important tasks to handle.

In the end, there are only 3 possible bug priorities: "fix right now", "fix before shipping", and "don't bother". Anything that tries to be more precise adds some unnecessary stress and overhead.


So according to him we have three priorities

1) P1 - Fix right now ( Blocker , Critical  )

2) P2 - Fix before shipping  ( Major, Normal)

3) P3 - Don't Bother ( Minor, Trivial , Enhancement )

Well he may be right , in terms of meeting deadlines and shipping out the product. But i have seen in many companies, a small issue when it is reported by internal team it is treated in "Don't Bother" category and no body fixes it. But when the same bug is reported by customers it becomes high priority bugs.

I do not have problem with P1 and P2 which is to be given high priority, but what about P3 bugs ? Do we just ignore them ? I think "No".

These are the bugs which can be like :

1) Spelling mistakes

2) Menu not proper

3) WEB/CLI command Error message not proper.

4) A new feature request.

5) When you do something specific "junk" values are displayed.

6) Some feature is not properly named, eg "DHCP Server" feature  is named as "DHCP" which may create confusion whether the feature is DHCP SERVER, CLIENT or RELAY.

7) Addtional note/comments to be added in WEB/CLI for users to use features effectively.

8) Specific Browsers issues.

9) Something like "add" option is present but "delete" option is not present.

10) Some extra feature is added which is not valid for that product line.

I think these bugs are to be fixed, even if they seem small and trivial or are just enhancements. Again it all depend on deadlines and shipping date, but these are the bugs which makes product usable from customer point of view.

The testing can be done from different view points but the testing which is done keeping "Customers" in mind will always succeed. How customer will configure these features, how he/she will try to use them, how they will deploy them. In this process even if "small issues" comes it should be fixed to enhance the customer experience.

If you are saying that as a developer "i don't care" about "Speeling mitsakes" and let the product ship with it as it not "blokcing" other "Enginer" or it is not delaying the "sheeping" time,

I Disagree.

YMMV. (Your Mileage May Vary)

Ping multicast address , RFC for Multicast

Anytime did u try to ping any multicast address ?

What will happen if I ping to multicast IP lets say

Multicast addresses are in the range of through

The IANA registry talks about these multicast address.

It is defined in RFC 1112.

As per IANA

"The range of addresses between and, inclusive, is reserved for the use of routing protocols and other low-level topology discovery or maintenance protocols, such as gateway discovery and group membership reporting.  Multicast routers should not forward any multicast datagram with destination addresses in this range, regardless of its TTL. "

OK so now main question , when you ping to multicast address how ARP gets resolved ?

Well , if you go through RFC 1112 , you will come to know that for multicast ip- mac address mapping is done at local network interface itself. It wont be done at IP or ARP layers but at Ethernet layer itself.

So if you ping to this address there wont be any ARP request generated but directly ICMP ECHO request packet will be generated by the PC and will be sent with Ethernet 2 -MAC address as 01:00:5E:01:01:01.

Don't Trust me Test it !!!

Keep learning and Keep Sharing !!!

Monday, 16 July 2012

Very Nice Simple Hex Tool Free Editor

This HxD is one of the easy-to-install and use-as-you-install tool.

Very less time spent on installation and editing Hex files. Nice free software.

Thursday, 12 July 2012

How to find start and end address of registers ?

Each sector is of 64 K.
1 KB = 1024 byte
Lets say the starting address is 0x016F2818 and you have reserved 192 sectors for this , so what will be end address ?
1) Convert in decimal all numbers
               1024*64*192 ===12582912, convert in hexa = c00000
2) Now add to starting location address
3) The end address will be 22f2818-1 =0x22f2817

Answer these common networking interview questions

These are some of the basic networking questions, but every time i ask these 90 % of the people give answers wrong. Try it and post in comments , lets see ...

1) What is destination mac address in ARP header ?

2) What is destination IP address for any DHCPDISCOVER packet ?

3) What tables/statistics/parameter bridge will modify/update when any packet it receives for the first time ?

4) If i have 390 switches in between PC1 and PC2 will they ping ? what will happen if i change switches with routers ?

5) What is maximum and minimum converge time for STP ( spanning tree protocol ) when they will come?

6) Your desktop PC is it a router or bridge ?

7) Why IP address is required for pure L2 switch, nno routing functionality ?

8) What will happen if you  ping from PC ? What tables and parameters is looked into before sending the packet out?

9) Lets say a single broadcast packet is received by a 4 port switch on one of its port, now how many packets it will generate and send to all ports?

10) How tftp protocol identifies if the file transfer is finished? Is there any bit in message exchange which signifies this?

Please post your answers....

Wednesday, 11 July 2012

How to convert OmniPeek capture file to Colasoft frame format

Omnipeek is wireless network analyzer tool. It has free Demo version. With the demo, we can create up to 5 capture windows, which are limited to 2,000 packets or 5 minutes of capture whichever comes first.

Each capture window can only capture once. Also, we can not save files or print.

If you have licensed version of it, you can capture the wireless packet and send it using Colasoft packet player to simulate the traffic.

Colasoft packet player/builder are free network, software tools from Colasoft company.

To open Omnipeek packet capture in Colasoft we have to save it in specific format. The Colasoft wont recognize the direct saved packet from Omnipeek.

1) First capture the packet in Omnipeek.

2) Save the packet as wireshark file ( extension will be like xyz.pcap)

3) Open the saved packet in wirehark. Now save the packet with extension "xyz.pkt"

4) Open Colasoft player or builder , you should be able to import the saved packet and play it continuously.

OSI Layers and its explainations ( RFC -1122/1123 )

These two RFCs cover basics of OSI layers.

We should read these to understand basics. I will try to cover these two RFC sometime later, but if you have time please go through it.

RFC -1122 -> Requirements for Internet Hosts- Communication layers

RFC 1123 -> Requirements for Internet Hosts - Application and Support

Monday, 9 July 2012

Internet Protocol Details (RFC 791)

The RFC 791 tells about Internet Protocol. This is one of the basic RFC which should be read by everyone.

Important points about this RFC :

1) IP designed for packet switch networks.

2) IP provides transmission of blocks of data knows as datagrams.

3) It provides fragmentation and reassembly of long datagrams if required.

4) It is host to host protocol and does not have mechanism for end-to-end data reliability, flow control and sequencing

5) It implements two basic functions addressing and fragmentation.

6)  Internet module ( IP module) use the addresses from internet header to transmit datagram. The selection of a path for transmission is called routing.

7) The internet modules use fields in the internet header to fragment and reassemble internet datagrams when necessary.

8) The Internet module resides in each host and gateway that interconnects networks. These modules share common rules for interpreting address fields and for fragmenting and assembling internet datagrams.

9) These internet modules have procedures for making routing decisions and other functions.

10) The IP treats each internet datagram as an independent entity.

11) IP uses four key mechanisms in providing its service:

        Type of Service : uses to indicate quality of service, used by gateways to select actual path for transmission when routing an internet datagram.

         Time to Live  : Maximum lifetime of an internet datagram. It is set by sender. Reduced by intermediate routers and if reaches zero it is dropped by receiving router.
         Options   :  control functions includes provisions for timestamps, security and special routing.

         Header Checksum : Provides a verification method that datagram transmitted is correct.

12)  The internet protocol does not provide a reliable communication facility.

13) There are no acknowledgments either end-to-end or hop-by-hop.

14) There is no error control for data, only a header checksum.

15) There are no retransmissions.

16) There is no flow control.

17) Errors detected may be reported via the Internet Control Message Protocol (ICMP) which is implemented in the internet protocol module.

18) The datagrams are routed from one internet module to another based on interpretation of internet address. ( Addressing mechanism)

19) Datagram may traverse a network whose mx packet size is smaller than the size of datagram. ( Fragmentation mechanism )

20)  Addresses are fixed length of 4 octets ( 32 bits). An address begins with a network number, followed by local address (called the "rest" field). There are three formats or classes of internet addresses: in class a, the high order bit is zero, the next 7 bits are the network, and the last 24 bits are the local address; in class b, the high order two bits are one-zero, the next 14 bits are the network and the last 16 bits are the local address; in class c, the high order three bits are one-one-zero, the next 21 bits are the network and the last 8 bits are the local address.

21) Fragmentation :  An internet datagram can be marked "don't fragment." Any internet datagram so marked is not  fragmented.  It should be discarded if it cannot reach the destination without fragmenting.

22) Fragmentation, transmission and reassembly across a local network which is invisible to the internet protocol module is called intranet fragmentation.

23) The receiver of the fragments uses the identification field to ensure that fragments of different datagrams are not mixed.

24)  The fragment offset field tells the receiver the position of a fragment in the original datagram.

25) The fragment offset and length determine the portion of the original datagram covered by this fragment.

26)  The more-fragments flag indicates (by being reset) the last fragment.

27)  These fields provide sufficient information to reassemble datagrams.

28)  The identification field is used to distinguish the fragments of one datagram from those of another. The originating protocol module of an internet datagram sets the identification field to a value that must be unique for that source-destination pair and protocol for the time the datagram will be active in the internet system.

29) The originating protocol module of a complete datagram sets the more-fragments flag to zero and the fragment offset to zero.

30) To fragment a long internet datagram, an internet protocol module (for example, in a gateway), creates two new internet datagrams and copies the contents of the internet header fields from the long datagram into both new internet headers. The data of the long datagram is divided into two portions on a 8 octet (64 bit) boundary (the second portion might not be an integral multiple of 8 octets, but the first must be). Call the number of 8 octet blocks in the first portion NFB (for Number of Fragment Blocks). The first portion of the data is placed in the first new internet datagram, and the total length field is set to the length of the first. The more-fragments flag is set to one.

31) The second portion of the data is placed in the second new internet datagram, and the total length field is set to the length of the second datagram. The more-fragments flag carries the same value as the long datagram. The fragment offset field of the second new internet datagram is set to the value of that field in the long datagram plus NFB. This procedure can be generalized for an n-way split, rather than the two-way split described.

32) To assemble the fragments of an internet datagram, an internet protocol module (for example at a destination host) combines internet datagrams that all have the same value for the four fields: identification, source, destination, and protocol. The combination is done by placing the data portion of each fragment in the relative position indicated by the fragment offset in that fragment's internet header. The first fragment will have the fragment offset zero, and the last fragment will have the more-fragments flag reset to zero.

33) Gateways implement internet protocol to forward datagrams between networks.

Installation : How to install Testlink 1.8.5

TestLink is web based test case management system. It has following things which can be used :

1) Collection of test plans and test cases

2) In Test cases ->we can add Summary, Steps , Expected result, Execution type, Test importance, Keywords

3) Each test case can be matched with requirements.

4) The folder structure in TestLink terminology is

            Test Project-> Test Suite -> Test Cases ( or child Test Suite )

       Mapping with Normal testing terms will be like :

               Project-> TestPlans-> Test Cases

  5) Only "admin" can create test projects/users.

  6) Leaders  can create Test Suite, Builds, Assign test case executions.

  7) Test Suites/ Test cases can be moved/ copied in single project. Copying from another project is not allowed.

  8) Once test cases are updated, leader can assign the test cases to testers.

 9)  The testers can mark the test cases as PASS/Failed/Blocked.

 10) Once the Test status is marked  as PASS/Failed/Blocked it cannot be changed to "Not run" again.
        However if new build is added again all test cases will become "Not run" .

Installation screen shots for Test Link


After installaition the login screen will come,  username : admin and password  : admin 

After login you will get main page with all the features :

 Test Project Management

Create new Test project Project_A


After "Create" the Home page  will have "Test Plan Management Tab" :

Create the Test Plan in "TestPlan Management"

Now Create the Test Suites

Add the Test Cases in Test suite

Create the Builds

For execution of test plan build is to be created.

Add/Remove users 

Assign Test cases to users

 For this add/remove the test cases to be assigned


Now Assignt the test case execution:

Execution by testers

The reports can be seen in Results section.

Various DHCP options, BOOT Extensions, Mobility services DHCP options and Access Network Discovery and Selection Function (ANDSF) Discovery

 DHCP is Dynamic host configuration protocol. It is defined in RFC 2131 and it follows DORA exchange of messages ( DHCPDISCOVER, DHCPOFFER,  DHCPREQUEST, DHCPACK)

We have various DHCP options:

The DHCP options ( 0-255) are divided into two ranges

1) 1-127 are publicly defined options and are now allocated in accordance to RFC 2939

2) 128-253 are site specific option

Options 0 is "pad option" and option 255 is "End option"

RFC related to common DHCP options:

1) DHCP options and BOOTP vendor extensions : RFC 2132

2) DHCP DHCP Relay Agent Information Option : RFC 3046 : option 82

3) Dynamic Host Configuration Protocol (DHCP) Domain Search Option :  RFC 3397

4) Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4) : RFC 3925

5) The Name Service Search Option for DHCP : RFC 2937

6) The IPV4 Subnet Selection option for DHCP : RFC 3011

7) Dynamic Host Configuration Protocol (DHCP-for-IPv4) Option for Session Initiation Protocol (SIP) Servers : RFC 3361

IPv6 Related DHCP RFC

    RFC 3315, Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
    RFC 3633, IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6
    RFC 4649, Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Remote-ID Option


Dynamic Host Configuration Protocol (DHCPv4 and DHCPv6) Options for IEEE 802.21 Mobility Services (MoS) Discovery : RFC 5678

DHCPv4 and DHCPv6 Options for Access Network Discovery and Selection Function (ANDSF) Discovery  : RFC 6153

Good link which has all the options

Thursday, 5 July 2012

ISO/IEC 12207 : Standard for Software life cycle processes

I came across this standard  ISO/IEC 12207 . This standard is for "Systems and software engineering — Software life cycle processes".

It contains five core processes which are involved in creating a software product.


In "Development" we have "Module test", "Integration test" and "System Test" from testing prospective.

Tuesday, 3 July 2012

A short tutorial on TFTP protocol ( How tftp works)

TFTP is used in embedded system to do file transfer.  Important points about this protocol are as follows:

1) TFTP : trivial file transfer protocol : RFC 1350, TFTP option extension : RFC 2347, TFTP blocksize option : RFC 2348, TFTP time out and transfer size : 2349

2) Main purpose : file transfer , simple and easy to implement

3) Works on top of UDP

4) Frame format : Ethernet header -> IP header-> UDP header -> TFTP header

5) It can read and write the files.

6) It cannot list the directories or do user authentication

7)  Modes of transfer supported : netacsii, octet, mail (obsolete)

8) The file is sent data packet, each data packet consists of blocks of fixed length of 512 bytes.

9) Any data packet less than 512 bytes signals termination of the transfer.

10) Each block is acknowledged with ACK packet from client.

11) Timeouts are used to signal data packet lost or error.

12) Errors can be caused by :
                                   a) Not being able to satisfy request (eg. file not found)
                                   b) Receiving a packet which cannot be explained by delay or duplication ( incorrectly formed packet)
                                   c) Loosing access to a necessary resource ( eg. disk full or access denied)

         These error cause in termination of connection.

13) In only this error condition the connection is not terminated  " the source port of a received packet being incorrect" in this case the error packet is sent to the originating host.

14) Normal TFTP transfer

               a) Client request "TFTP read" -> UDP header ->dst port 69, src port : random port (eg. 3455)
                                                               TFTP header -> opcode ->1 ( read ,2 byte)
                                                                                       Source file name -> image ( 13 byte)
                                                                                         Type -> 3 bytes
                                                                                         Options -> 10 bytes ( 8 bytes -> option name , 2 byte value)

              b) Server sends option ack -> UDP header -> src port (random : 4556 eg) , dst port (client port ) 3455, length (total length)
                                                          TFTP header -> opcode: 6 ( option ack, 2 byte)
                                                                                 Options-> 10 byte ( 8 bytes-> option name, 2 byte value)

             c) Client send ACK-> UDP header -> src port : 3455, dst port : 4556
                                              TFTP header-> opcode-> 4 ( ACK, 2 byte)
                                                                     Block-> 0 ( 2 byte)

            d) Server sends data packet--> UDP same as (b)
                                                         TFTP-> opcode 3 (data packet, 2 byte)
                                                                      Block -> 1 ( 2bye)
                                                                       DATA ( 512 bytes)

 The same will be repeated till the server send data packet less than 512 byte ( between 0-511 bytes) . It will be marked as last data packet and client will send ACK and terminate the connection ( no other packet from either side).

15) TFTP packet types Opcodes :
                                              1 : Read Request (RRQ)
                                              2 : Write Request (WRQ)
                                              3 : Data (DATA)
                                              4 : Acknowledgment (ACK)
                                              5 : Error (ERROR)
                                              6 : Option Acknowledgement

Monday, 2 July 2012

Why there is difference in salary between Developer and Tester ?

Why there is difference in salary between Developer and Tester ? Who is responsible for it?

In product companies there is no salary difference, it is same. But in services company still there is difference.

Why ? It is because of "Experienced TESTERS" , the testers who started their career "screaming" that there should not be any difference in salaries but when they became Lead, Manager, Senior Manager, Director, Vice President. They start behaving the same way. Their mind became tuned to the "Difference". They themselves did not give importance to testers.

It reminds me of a story. There was a small elephant. When people caught that elephant they tied it with large ropes and left. The poor elephant tried hard, screamed , tried and tried but could not break open the ropes. So he submitted to the fate. He stopped trying and accepted the defeat. Now when he grew up they will tie him with a very small rope but as he has done it before and was not able to break it. He stopped trying and accepted the rope as it is and never try to break open.

Similarly when we join as freshers in testing team we scream to our seniors,  but no body listens. So when we become seniors we stop trying. Our mind gets tuned to it. And when we are in authority to change the things we wont do it. We treat juniors in similar way.

I have seen management ready to give equal salaries to tester and developers. But only our team seniors (testing team) opposes it and the gap still remains.

I request you, if you are fresher, you have passion to test and break the code. Speak up. Demand equal salaries. We are equal or better than developers as we have system knowledge, they have only their module knowledge. Why we should be considered as less ?

I request you, if you are in senior management position. Please bridge the gap in your company. Make them equal. One small change can do wonders....

DHCP Relay Forward the Packet to Server on which Ports ( DHCP Relay uses which ports number to communicate with server and client

DHCP Relay is defined in  RFC 3046 :
DHCP is defined in RFC 2131 :
What ports DHCP relay uses to communicates with Server ?
As such in RFC 3046 there is no mention of ports, but there is another draft
Which says :
4.7.2 Relay Agent Port Usage
        Relay agents should use port 67 as the source port number.  Relay
        agents always listen on port 67, but port 68 has sometimes been used
        as the source port number probably because it was copied from the
        source port of the incoming packet.
        Cable modem vendors would like to install filters blocking outgoing
        packets with source port 67.
        O  Relay agents MUST use 67 as their source port number.
        O  Relay agents MUST NOT forward packets with non-zero giaddr
           unless the source port number on the packet is 67.
So DHCP relay set source port as 67, what about destination port ?
and RFC 2131 says :
DHCP uses UDP as its transport protocol.  DHCP messages from a client
   to a server are sent to the 'DHCP server' port (67), and DHCP
   messages from a server to a client are sent to the 'DHCP client' port
   (68). A server with multiple network address (e.g., a multi-homed
   host) MAY use any of its network addresses in outgoing DHCP messages
So to send the DHCPDISCOVER packet to the server the relay has to send on port "67" only so that server will receive it.
So for both source and destination ports for DHCP RELAY the ports used are "67"
But ok see this :
this has a option to set the port which says that:
-p port :
The UDP receiving port that dhcprelay will listen to. By default, dhcprelay listens for datagrams on port 67 or as specified in /etc/services. The port dhcprelay transmits on is the one with the next highest number (e.g. if dhcprelay receives on port 67, it transmits on port 68). This option is mostly used for debugging purposes.
I am not sure how the server will listen on port 68.
Another one :
In this product we can modify and give the port for DHCP relay to send and listen to by default it is mentioned as port 67 only.
Our own Linux as DHCP relay (ISC- IPV4)  uses port 67 as both source and destination.
Let me know your device as DHCP relay uses which port numbers?