Example #1
0
 protected void socket_data_arrival(easy_socket.ip_header.ipv4_header sender, easy_socket.ip_header.EventArgs_FullPacket e)
 {
     if (this.sniff_mode)
     {
         // ip_header_server has checked that these are tcp packets see the arguments of ip_header_server.start
         if (this.b_check_ip)// check before decoding for speed reasons
         {
             // if ip must be checked, check it
             if (sender.destination_address != this.spy_ip)
             {
                 if (!this.sniff_outgoing_packets)
                 {
                     return;// packet is not satisfying condition
                 }
                 // else check outgoing condition
                 if (sender.source_address != this.spy_ip)
                 {
                     return;
                 }
             }
         }
     }
     if (this.decode(sender.source_address, sender.destination_address, sender.data) != easy_socket.tcp_header.tcp_header.error_success)
     {
         // here decoding error can be catched
         return;
     }
     if (this.sniff_mode)
     {
         if (this.b_check_port)
         {
             // if port must be checked, check it
             if (this.destination_port != this.spy_port)
             {
                 if (!this.sniff_outgoing_packets)
                 {
                     return;// packet is not satisfying condition
                 }
                 // else check outgoing condition
                 if (this.source_port != this.spy_port)
                 {
                     return;
                 }
             }
         }
     }
     // send data arrival event
     if (this.event_Data_Arrival != null)
     {
         this.event_Data_Arrival(this, new EventArgs_ipv4header_ReceiveData(sender, e.buffer));
     }
 }
        protected void socket_data_arrival(easy_socket.ip_header.ipv4_header sender, easy_socket.ip_header.EventArgs_FullPacket e)
        {
            // get only icmp message
            if (sender.protocol != easy_socket.ip_header.ipv4_header.protocol_icmp)
            {
                return;
            }
            icmp_client ret;

            switch (sender.data[0])// switch type
            {
            case icmp.EchoReply:
                ret = new icmp_echo_reply();
                if (event_icmp_echo_reply_Data_Arrival != null)
                {
                    if (ret.decode(sender.data) == icmp.error_success)
                    {
                        event_icmp_echo_reply_Data_Arrival((icmp_echo_reply)ret, new EventArgs_ipv4header_ReceiveData(sender));
                    }
                }
                break;

            case icmp.DestinationUnreachable:
                ret = new icmp_destination_unreachable();
                if (event_icmp_destination_unreachable_Data_Arrival != null)
                {
                    if (ret.decode(sender.data) == icmp.error_success)
                    {
                        event_icmp_destination_unreachable_Data_Arrival((icmp_destination_unreachable)ret, new EventArgs_ipv4header_ReceiveData(sender));
                    }
                }
                break;

            case icmp.SourceQuench:
                ret = new icmp_source_quench();
                if (event_icmp_source_quench_Data_Arrival != null)
                {
                    if (ret.decode(sender.data) == icmp.error_success)
                    {
                        event_icmp_source_quench_Data_Arrival((icmp_source_quench)ret, new EventArgs_ipv4header_ReceiveData(sender));
                    }
                }
                break;

            case icmp.Redirect:
                ret = new icmp_redirect();
                if (event_icmp_redirect_Data_Arrival != null)
                {
                    if (ret.decode(sender.data) == icmp.error_success)
                    {
                        event_icmp_redirect_Data_Arrival((icmp_redirect)ret, new EventArgs_ipv4header_ReceiveData(sender));
                    }
                }
                break;

            case icmp.Echo:
                ret = new icmp_echo();
                if (event_icmp_echo_Data_Arrival != null)
                {
                    if (ret.decode(sender.data) == icmp.error_success)
                    {
                        event_icmp_echo_Data_Arrival((icmp_echo)ret, new EventArgs_ipv4header_ReceiveData(sender));
                    }
                }
                break;

            case icmp.TimeExceeded:
                ret = new icmp_time_exceeded_message();
                if (event_icmp_time_exceeded_message_Data_Arrival != null)
                {
                    if (ret.decode(sender.data) == icmp.error_success)
                    {
                        event_icmp_time_exceeded_message_Data_Arrival((icmp_time_exceeded_message)ret, new EventArgs_ipv4header_ReceiveData(sender));
                    }
                }
                break;

            case icmp.ParameterProblem:
                ret = new icmp_parameter_problem();
                if (event_icmp_parameter_problem_Data_Arrival != null)
                {
                    if (ret.decode(sender.data) == icmp.error_success)
                    {
                        event_icmp_parameter_problem_Data_Arrival((icmp_parameter_problem)ret, new EventArgs_ipv4header_ReceiveData(sender));
                    }
                }
                break;

            case icmp.Timestamp:
                ret = new icmp_timestamp();
                if (event_icmp_timestamp_Data_Arrival != null)
                {
                    if (ret.decode(sender.data) == icmp.error_success)
                    {
                        event_icmp_timestamp_Data_Arrival((icmp_timestamp)ret, new EventArgs_ipv4header_ReceiveData(sender));
                    }
                }
                break;

            case icmp.TimestampReply:
                ret = new icmp_timestamp_reply();
                if (event_icmp_timestamp_reply_Data_Arrival != null)
                {
                    if (ret.decode(sender.data) == icmp.error_success)
                    {
                        event_icmp_timestamp_reply_Data_Arrival((icmp_timestamp_reply)ret, new EventArgs_ipv4header_ReceiveData(sender));
                    }
                }
                break;

            case icmp.InformationRequest:
                ret = new icmp_information_request();
                if (event_icmp_information_request_Data_Arrival != null)
                {
                    if (ret.decode(sender.data) == icmp.error_success)
                    {
                        event_icmp_information_request_Data_Arrival((icmp_information_request)ret, new EventArgs_ipv4header_ReceiveData(sender));
                    }
                }
                break;

            case icmp.InformationReply:
                ret = new icmp_information_reply();
                if (event_icmp_information_reply_Data_Arrival != null)
                {
                    if (ret.decode(sender.data) == icmp.error_success)
                    {
                        event_icmp_information_reply_Data_Arrival((icmp_information_reply)ret, new EventArgs_ipv4header_ReceiveData(sender));
                    }
                }
                break;

            default:
                break;
            }
        }