diff --git a/gtests/net/packetdrill/lexer.l b/gtests/net/packetdrill/lexer.l
index b46d1c324182eacb5573cffa28a544a924d8d980..ad44339817e9ff840ae45059f215d3c4bd495a08 100644
--- a/gtests/net/packetdrill/lexer.l
+++ b/gtests/net/packetdrill/lexer.l
@@ -133,7 +133,7 @@ static s64 hextol(const char *s)
 }
 
 enum ifdef_os {
-	Linux_IFDEF = 1, FreeBSD_IFDEF, NetBSD_IFDEF, OpenBSD_IFDEF, Omnet_IFDEF, Apple_IFDEF
+	Linux_IFDEF = 1, FreeBSD_IFDEF, NetBSD_IFDEF, OpenBSD_IFDEF, Omnet_IFDEF, Apple_IFDEF, Solaris_IFDEF
 };
 
 #define MAX_IFDEF_DEPTH 1
@@ -154,6 +154,8 @@ static inline int get_os_name_length(enum ifdef_os os) {
 		return strlen("Omnet");
 	case Apple_IFDEF:
 		return strlen("Apple");
+	case Solaris_IFDEF:
+		return strlen("Solaris");
 	default:
 		return -1;
 	}
@@ -175,6 +177,9 @@ static inline bool ignore_ifdef(enum ifdef_os os) {
 #endif
 #ifdef __APPLE__
 	case Apple_IFDEF:
+#endif
+#ifdef __SunOS_5_11
+	case Solaris_IFDEF:
 #endif
 	/* no need to handle Omnet here */
 		return false;
@@ -255,6 +260,8 @@ c_comment	\/\*(([^*])|(\*[^\/]))*\*\/
  *   #ifdef NetBSD  => Code that only NetBSD hosts should execute
  *   #ifdef OpenBSD => Code that only OpenBSD hosts should execute
  *   #ifdef Omnet   => Code that only an Omnet based simulation should execute
+ *   #ifdef Apple   => Code that only Apple hosts should execute
+ *   #ifdef Solaris => Code that only Solaris hosts should execute
  *
  *   the pattern for using #ifdef is like this:
  *   #ifdef Linux
@@ -273,6 +280,8 @@ ifdef_linux	{ifdef_begin}(?i:Linux){end_matcher}{ifdef_end}
 ifdef_netbsd	{ifdef_begin}(?i:NetBSD){end_matcher}{ifdef_end}
 ifdef_openbsd	{ifdef_begin}(?i:OpenBSD){end_matcher}{ifdef_end}
 ifdef_omnet	{ifdef_begin}(?i:Omnet){end_matcher}{ifdef_end}
+ifdef_apple	{ifdef_begin}(?i:Apple){end_matcher}{ifdef_end}
+ifdef_solaris	{ifdef_begin}(?i:Solaris){end_matcher}{ifdef_end}
 
 /* The regexp for code snippets is analogous to that for C comments.
  * Here is a summary of the regexp for code snippets:
@@ -696,6 +705,8 @@ NULL				return NULL_;
 {ifdef_netbsd}			handle_ifdef(NetBSD_IFDEF, yytext);
 {ifdef_openbsd}			handle_ifdef(OpenBSD_IFDEF, yytext);
 {ifdef_omnet}			handle_ifdef(Omnet_IFDEF, yytext);
+{ifdef_apple}			handle_ifdef(Apple_IFDEF, yytext);
+{ifdef_solaris}			handle_ifdef(Solaris_IFDEF, yytext);
 {code}				yylval.string = code(yytext);   return CODE;
 {ipv4_addr}			yylval.string = strdup(yytext); return IPV4_ADDR;
 {ipv6_addr}			yylval.string = strdup(yytext); return IPV6_ADDR;