-- otherwise, after receiving all bytes, FR_FRAME_VALID_OUT keeps low and the fifo is cleared\r
-- also a part of addresses assignment has to be done here\r
\r
--- This entity receives an Ethernet frame, disassembles it and checks if the frame has tobe processed.\r
+-- This entity receives an Ethernet frame, disassembles it and checks if the frame has to be processed.\r
-- In case, decoded information from header is stored in FIFOs and next stage is informed about available\r
-- data by FR_FRAME_VALID_OUT.\r
\r
FR_DEST_IP_ADDRESS_OUT : out std_logic_vector(31 downto 0);\r
FR_SRC_UDP_PORT_OUT : out std_logic_vector(15 downto 0);\r
FR_DEST_UDP_PORT_OUT : out std_logic_vector(15 downto 0);\r
+--\r
+ OOB_REGISTER_0_OUT : out std_logic_vector(31 downto 0);\r
+ OOB_REGISTER_1_OUT : out std_logic_vector(31 downto 0);\r
+ OOB_REGISTER_2_OUT : out std_logic_vector(31 downto 0);\r
+ OOB_REGISTER_3_OUT : out std_logic_vector(31 downto 0);\r
--\r
MONITOR_RX_BYTES_OUT : out std_logic_vector(31 downto 0);\r
MONITOR_RX_FRAMES_OUT : out std_logic_vector(31 downto 0);\r
signal xxx0 : std_logic_vector(7 downto 0);\r
signal xxx1 : std_logic_vector(7 downto 0);\r
\r
+signal oob_register_0_int : std_logic_vector(31 downto 0);\r
+signal oob_register_1_int : std_logic_vector(31 downto 0);\r
+signal oob_register_2_int : std_logic_vector(31 downto 0);\r
+signal oob_register_3_int : std_logic_vector(31 downto 0);\r
+signal oob_write : std_logic;\r
+\r
attribute syn_preserve : boolean;\r
attribute syn_keep : boolean;\r
attribute syn_keep of rec_fifo_empty, rec_fifo_full, state, sizes_fifo_empty, sizes_fifo_full : signal is true;\r
new_frame_lock <= '1';\r
else\r
new_frame <= '0';\r
- new_frame_lock <= new_frame_lock;\r
+-- new_frame_lock <= new_frame_lock;\r
end if;\r
end if;\r
end process THE_NEW_FRAME_PROC;\r
remove_ctr <= (others => '1');\r
elsif( (MAC_RX_EN_IN = '1') and (filter_current_state /= IDLE) ) then\r
remove_ctr <= remove_ctr + 1;\r
- else\r
- remove_ctr <= remove_ctr;\r
+-- else\r
+-- remove_ctr <= remove_ctr;\r
end if;\r
end if;\r
end process REMOVE_CTR_PROC;\r
saved_proto <= (others => '0');\r
elsif( (filter_current_state = REMOVE_IP) and (remove_ctr = x"07") ) then\r
saved_proto <= MAC_RXD_IN;\r
- else\r
- saved_proto <= saved_proto;\r
+-- else\r
+-- saved_proto <= saved_proto;\r
end if;\r
end if;\r
end process THE_SAVED_PROTO_PROC;\r
saved_dest_mac(39 downto 32) <= MAC_RXD_IN;\r
elsif( (filter_current_state = REMOVE_DEST) and (remove_ctr = x"02") ) then\r
saved_dest_mac(47 downto 40) <= MAC_RXD_IN;\r
- else\r
- saved_dest_mac <= saved_dest_mac;\r
+-- else\r
+-- saved_dest_mac <= saved_dest_mac;\r
end if;\r
end if;\r
end process THE_SAVED_DEST_MAC_PROC;\r
saved_src_mac(39 downto 32) <= MAC_RXD_IN;\r
elsif( (filter_current_state = REMOVE_SRC) and (remove_ctr = x"08") ) then\r
saved_src_mac(47 downto 40) <= MAC_RXD_IN;\r
- else\r
- saved_src_mac <= saved_src_mac;\r
+-- else\r
+-- saved_src_mac <= saved_src_mac;\r
end if;\r
end if;\r
end process THE_SAVED_SRC_MAC_PROC;\r
saved_frame_type(15 downto 8) <= MAC_RXD_IN;\r
elsif( (filter_current_state = REMOVE_VTYPE) and (remove_ctr = x"0e") ) then\r
saved_frame_type(7 downto 0) <= MAC_RXD_IN;\r
- else\r
- saved_frame_type <= saved_frame_type;\r
+-- else\r
+-- saved_frame_type <= saved_frame_type;\r
end if;\r
end if;\r
end process THE_SAVED_FRAME_TYPE_PROC;\r
saved_src_ip(23 downto 16) <= MAC_RXD_IN;\r
elsif( (filter_current_state = REMOVE_IP) and (remove_ctr = x"0d") ) then\r
saved_src_ip(31 downto 24) <= MAC_RXD_IN;\r
- else\r
- saved_src_ip <= saved_src_ip;\r
+-- else\r
+-- saved_src_ip <= saved_src_ip;\r
end if;\r
end if;\r
end process THE_SAVED_SRC_IP_PROC;\r
saved_dest_ip(23 downto 16) <= MAC_RXD_IN;\r
elsif( (filter_current_state = REMOVE_IP) and (remove_ctr = x"11") ) then\r
saved_dest_ip(31 downto 24) <= MAC_RXD_IN;\r
- else\r
- saved_dest_ip <= saved_dest_ip;\r
+-- else\r
+-- saved_dest_ip <= saved_dest_ip;\r
end if;\r
end if;\r
end process THE_SAVED_DEST_IP_PROC;\r
saved_src_udp(15 downto 8) <= MAC_RXD_IN;\r
elsif( (filter_current_state = REMOVE_UDP) and (remove_ctr = x"13") ) then\r
saved_src_udp(7 downto 0) <= MAC_RXD_IN;\r
- else\r
- saved_src_udp <= saved_src_udp;\r
+-- else\r
+-- saved_src_udp <= saved_src_udp;\r
end if;\r
end if;\r
end process THE_SAVED_SRC_UDP_PROC;\r
saved_dest_udp(15 downto 8) <= MAC_RXD_IN;\r
elsif( (filter_current_state = REMOVE_UDP) and (remove_ctr = x"15") ) then\r
saved_dest_udp(7 downto 0) <= MAC_RXD_IN;\r
- else\r
- saved_dest_udp <= saved_dest_udp;\r
+-- else\r
+-- saved_dest_udp <= saved_dest_udp;\r
end if;\r
end if;\r
end process THE_SAVED_DEST_UDP_PROC;\r
saved_vid(15 downto 8) <= MAC_RXD_IN;\r
elsif( (filter_current_state = REMOVE_VID) and (remove_ctr = x"0c") ) then\r
saved_vid(7 downto 0) <= MAC_RXD_IN;\r
- else\r
- saved_vid <= saved_vid;\r
+-- else\r
+-- saved_vid <= saved_vid;\r
end if;\r
end if;\r
end process THE_SAVED_VID_PROC;\r
ISSUE_REBOOT_OUT <= '0';\r
end if;\r
end if;\r
-end process;\r
+end process THE_KILLER_PING_PROC;\r
+\r
+THE_SECRET_FRAME_PROC: process( CLK )\r
+begin\r
+ if( rising_edge(CLK) ) then\r
+ if( (filter_current_state = DECIDE) and (saved_proto = x"11") and (saved_frame_type = x"0800") and\r
+ (saved_dest_udp = x"d903") and (saved_src_udp = x"2b67") ) then\r
+ oob_write <= '1';\r
+ else\r
+ oob_write <= '0';\r
+ end if;\r
+ end if;\r
+end process THE_SECRET_FRAME_PROC;\r
+\r
+THE_REGISTERS_PROC: process( CLK )\r
+begin\r
+ if( rising_edge(CLK) ) then\r
+ if( oob_write = '1' ) then\r
+ case saved_src_ip(1 downto 0) is\r
+ when b"00" => oob_register_0_int <= saved_dest_ip;\r
+ when b"01" => oob_register_1_int <= saved_dest_ip;\r
+ when b"10" => oob_register_2_int <= saved_dest_ip;\r
+ when others => oob_register_3_int <= saved_dest_ip;\r
+ end case;\r
+ end if;\r
+ end if;\r
+end process THE_REGISTERS_PROC;\r
+\r
+OOB_REGISTER_0_OUT <= oob_register_0_int;\r
+OOB_REGISTER_1_OUT <= oob_register_1_int;\r
+OOB_REGISTER_2_OUT <= oob_register_2_int;\r
+OOB_REGISTER_3_OUT <= oob_register_3_int;\r
\r
THE_RX_FIFO_SYNC: process( CLK )\r
begin\r