#include "host/pingprotocol.h"
 
+#include <algorithm>
 #include <map>
 
 #include <boost/assert.hpp>
 
 map<string, PingProtocol> protocol_string_map;
 
-PingProtocol get_ping_protocol_from_string( string protocol_string )
+PingProtocol get_ping_protocol_from_string( const string protocol_string )
 {
     BOOST_ASSERT( !protocol_string.empty() );
 
+    // convert to uppercase to allow the protocol to be case insensitive
+    string protocol_uppercase_string( protocol_string );
+    transform( protocol_string.begin(), protocol_string.end(),
+               protocol_uppercase_string.begin(),
+               ::toupper );
+
     // TODO move to an init method
     protocol_string_map[ "ICMP" ] = PingProtocol_ICMP;
     protocol_string_map[ "TCP" ] = PingProtocol_TCP;
 
-    return protocol_string_map[ protocol_string ];
+    return protocol_string_map[ protocol_uppercase_string ];;
 }
 
     PingProtocol_Last = PingProtocol_TCP
 };
 
-PingProtocol get_ping_protocol_from_string( std::string protocol_string );
+PingProtocol get_ping_protocol_from_string( const std::string protocol_string );
 
 #endif /* PINGPROTOCOL_H */