---
name: "ng_gif"
section: "4"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/ng_gif"
---

# ng\_gif(4)

generic tunnel interface netgraph node

## NAME

**ng\_gif** – generic tunnel interface netgraph node

## SYNOPSIS

**#include \<netgraph/ng\_gif.h\>**

## DESCRIPTION

The **ng\_gif** netgraph node type allows [gif(4)](/gif/4.md) interfaces to interact with the [netgraph(4)](/netgraph/4.md) networking subsystem. Once the **ng\_gif** module is loaded in the kernel, a node is automatically created for each [gif(4)](/gif/4.md) interface in the system. Each node will attempt to name itself with the same name as the associated interface. All **ng\_gif** nodes are persistent for as long as the interface itself exists.

Two hooks are supported: lower and orphans. The hook name divert may be used as an alias for lower, and is provided for compatibility with [ng\_ether(4)](/ng_ether/4.md). In reality the two names represent the same hook.

The lower hook is a connection to the raw [gif(4)](/gif/4.md) device. When connected, all incoming packets are diverted out this hook. Writing to this hook results in a raw encapsulated packet being transmitted by the device. Normal outgoing packets are not affected by lower being connected.

The orphans hook is equivalent to lower, except that only unrecognized packets (that would otherwise be discarded) are written to the hook, and normal incoming traffic is unaffected. At most one of orphans and lower may be connected at any time.

In all cases, frames are raw packets with the address family of the packet attached to the front.

When no hooks are connected, packets flow normally upwards and downwards.

## HOOKS

This node type supports the following hooks:

- *lower*

  Connection to the lower device link layer.

- *orphans*

  Like lower, but only receives unrecognized packets.

## CONTROL MESSAGES

This node type supports only the generic control messages.

## EXAMPLES

This command dumps all unrecognized packets received by the gif0 interface to standard output decoded in hex and ASCII:

```
nghook -a gif0: orphans
```

## SEE ALSO

[gif(4)](/gif/4.md), [netgraph(4)](/netgraph/4.md), [netintro(4)](/netintro/4.md), [ifconfig(8)](/ifconfig/8.md), [ngctl(8)](/ngctl/8.md), [nghook(8)](/nghook/8.md)

## AUTHORS

Brooks Davis ⟨*brooks@FreeBSD.org*⟩
