Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Computer Science Homework Help Needed//Functions and Variables I have a new C++

ID: 3597749 • Letter: C

Question

Computer Science Homework Help Needed//Functions and Variables

I have a new C++ program I need to become familiar with, run this program in Code Blocks. I need to know all the functions defined in the code and all the variables and their types that are defined within each of the functions. I also need to know which line (line number) that each function is defined on. I need to write a program to read in a C++ program find the functions (names) and enter into a binary tree. Add to each node (function) in the tree the list of variables and their types found in each function. I have made the hunt for functions easier in that all functions are typed ‘void’. Print out in order, all the function names, the line define on and all the variables associated with each function.

   Input data file is ‘molecularWeights.dat’

Explanation / Answer

void raw_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p)

{                                                                                                                                           {

        u_int length = h->len;

        u_int caplen = h->caplen;

        /* At this point we start extracting data from the packet, with the var idx keeping up with where we are in the packet */

        // Print total packet size

        printf(" Packet Length %d bytes", h->len);

                // Decode Ethernet (Layer 2) Header Info

                        int idx;                         // counter variable for indexing through packet

                        char eth_destination[6]; // var to store the ethernet destination address

                        char eth_source[6];      // var to store the ethernet source address

                        short eth_type;                  // var to store the ethernet type value

                        char eth_payload[10];    // string array to store payload description

                        char eth_bcast[6] = "0xFF";

                        // Extract Ethernet Destination Address (1st 6 bytes)

                        for ( idx = 0; idx < 6; idx++)

                        {

                                eth_destination[idx] = p[idx];

                        }

                        // Extract Ethernet Source Address (2nd 6 bytes)

                        for ( idx = 6; idx < 12; idx++)

                        {

                                eth_source[idx-6] = p[idx];

                        }

                        // Combine two byte Ethernet Type/Length field into one value

                        eth_type = p[12] * 256 + p[13];

                        // Check the packet type and increment related counter

                        if ( eth_type >= 0x600) {

                                switch ( eth_type )

                                {

                                        case 0x800: // Check to see if the type indicates that the packet is IP

                                                ctrIP++;

                                                strcpy(eth_payload, "IP");

                                                break;

                                        case 0x806: // Check to see if the type indicates that the packet is ARP

                                                ctrARP++;

                                                strcpy(eth_payload, "ARP");

                                                break;

                                        default:

                                                break;

                                }

                        }

                        // Check to see if the destination was a broadcast packet and increment related counter

                        /*

                        if ((eth_destination[0] == 0xFF ) && (eth_destination[1] == 0xFF ) && (eth_destination[2] == 0xFF ) && (eth_destination[3] == 0xFF ) && (eth_destination[4] == 0xFF ) && (eth_destination[5] == 0xFF )) {

                                ctrBCAST++;

                        }

                        */

                        // Print Ethernet (Layer 2) Header Info

                                printf("Layer Field Value ");

                                printf("ETHERNET Destination %02x:%02x:%02x:%02x:%02x:%02x ", eth_destination[0],eth_destination[1],eth_destination[2],eth_destination[3],eth_destination[4],eth_destination[5]);

                                printf(" Source %02x:%02x:%02x:%02x:%02x:%02x ", eth_source[0],eth_source[1],eth_source[2],eth_source[3],eth_source[4],eth_source[5]);

                                printf(" Type 0x%02x ", eth_type);

                                printf(" Payload %s ", eth_payload);

                // All packets will have ethernet info (decoded and printed above).

                // At this point we have to determine what kind of data is at the next layer up (layer 3) and decode/print the data accordingly.

                // This is done based on the eth_type variable.

                if ( eth_type >= 0x600) {

                        switch ( eth_type )

                        {

                                case 0x800: // IP Packet

                                        // insert code to decode and print IP (should this be a separate sub-routine?

                                        break;

                                case 0x806: // ARP Packet

                                        // insert code to decode and print ARP

                                        break;

                                default:

                                        break;

                        }

                }

                exit(0);

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote