diff --git a/link.go b/link.go index b726fdb..cf53799 100644 --- a/link.go +++ b/link.go @@ -1118,8 +1118,16 @@ type Gretap struct { EncapFlags uint16 Link uint32 FlowBased bool + IgnoreDf GretapIgnoreDf } +type GretapIgnoreDf uint8 + +const ( + GRETAP_IGNORE_DF_FALSE = iota + GRETAP_IGNORE_DF_TRUE +) + func (gretap *Gretap) Attrs() *LinkAttrs { return &gretap.LinkAttrs } diff --git a/link_linux.go b/link_linux.go index 2238997..a00cf47 100644 --- a/link_linux.go +++ b/link_linux.go @@ -3461,6 +3461,9 @@ func addGretapAttrs(gretap *Gretap, linkInfo *nl.RtAttr) { data.AddRtAttr(nl.IFLA_GRE_ENCAP_FLAGS, nl.Uint16Attr(gretap.EncapFlags)) data.AddRtAttr(nl.IFLA_GRE_ENCAP_SPORT, htons(gretap.EncapSport)) data.AddRtAttr(nl.IFLA_GRE_ENCAP_DPORT, htons(gretap.EncapDport)) + if gretap.IgnoreDf != GRETAP_IGNORE_DF_FALSE { + data.AddRtAttr(nl.IFLA_GRE_IGNORE_DF, nl.Uint8Attr(uint8(gretap.IgnoreDf))) + } } func parseGretapData(link Link, data []syscall.NetlinkRouteAttr) { diff --git a/nl/link_linux.go b/nl/link_linux.go index 7a6bb79..64eb218 100644 --- a/nl/link_linux.go +++ b/nl/link_linux.go @@ -274,6 +274,7 @@ const ( IFLA_GRE_ENCAP_SPORT IFLA_GRE_ENCAP_DPORT IFLA_GRE_COLLECT_METADATA + IFLA_GRE_IGNORE_DF IFLA_GRE_MAX = IFLA_GRE_COLLECT_METADATA )