{name=>"IPPROTO_IP", type=>"IV", default=>["IV", 0]},
{name=>"IPPROTO_IPV6", type=>"IV", default=>["IV", 41]},
{name=>"IPPROTO_RAW", type=>"IV", default=>["IV", 255]},
- {name=>"IPPROTO_ICMP", type=>"IV", default=>["IV", 1]},
- {name=>"IPPROTO_TCP", type=>"IV", default=>["IV", 6]},
- {name=>"IPPROTO_UDP", type=>"IV", default=>["IV", 17]},
+ {name=>"IPPROTO_ICMP", type=>"IV", default=>["IV", 1]},
+ {name=>"IPPROTO_IGMP", type=>"IV", default=>["IV", 2]},
+ {name=>"IPPROTO_TCP", type=>"IV", default=>["IV", 6]},
+ {name=>"IPPROTO_UDP", type=>"IV", default=>["IV", 17]},
+ {name=>"IPPROTO_GRE", type=>"IV", default=>["IV", 47]},
+ {name=>"IPPROTO_ESP", type=>"IV", default=>["IV", 50]},
+ {name=>"IPPROTO_AH", type=>"IV", default=>["IV", 51]},
+ {name=>"IPPROTO_SCTP", type=>"IV", default=>["IV", 132]},
{name=>"SHUT_RD", type=>"IV", default=>["IV", "0"]},
{name=>"SHUT_WR", type=>"IV", default=>["IV", "1"]},
{name=>"SHUT_RDWR", type=>"IV", default=>["IV", "2"]},
# define Newx(v,n,t) New(0,v,n,t)
#endif /* !Newx */
+#ifndef SvPVx_nolen
+#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
+# define SvPVx_nolen(sv) ({SV *_sv = (sv); SvPV_nolen(_sv); })
+#else /* __GNUC__ */
+# define SvPVx_nolen(sv) ((PL_Sv = (sv)), SvPV_nolen(PL_Sv))
+#endif /* __GNU__ */
+#endif /* !SvPVx_nolen */
+
#ifndef croak_sv
# define croak_sv(sv) croak(SvPVx_nolen(sv))
#endif