Files
heig-rapport-tb/chapitres/model/methodes.tex
2018-09-06 17:12:54 +02:00

37 lines
1.4 KiB
TeX

\chapter{Les méthodes}
\section{route}
La méthode "route" retourne la route (\lstinline{Route}), utilisée par l'équipement (\lstinline{Device}) pour atteindre le réseau spécifié.
\begin{lstlisting}[language=Ruby]
# Params:
# * network: an IPv4 network to test
def route(network)
ip_net = IPAddr.new network
ip = ip_net.to_i
candidate_routes = routes.where(:start_ip.lte => ip, :end_ip.gte => ip)
choosed_route(candidate_routes)
end
\end{lstlisting}
\section{crossed?}
\label{sec:methodes:crossed}
La méthode "crossed?" est un élément essentiel pour l'analyse des règles de sécurité (\lstinline{Policy}). Elle permet de déterminer sur un équipement (\lstinline{Device}) est traversé par un flux définit par deux réseaux. Pour cela, il faut utiliser la méthode "route" de la table de routage (\lstinline{RoutingTable}) de l'équipement en question et comparer l'interface de sortie des deux routes (Route) retourné. Si elles sont différentes, cela signifique que le flux traverse ce firewall.
\begin{lstlisting}[language=Ruby]
# Params:
# * network1: the *source* network
# * network2: the *destination* network
def crossed?(network1, network2)
return false unless routing_table
route1 = routing_table.route(network1)
route2 = routing_table.route(network2)
return false unless route1 && route2
route1.interface != route2.interface
end
\end{lstlisting}