code: func ServeIf(ifIndex int, p *ipv4.PacketConn, handler Handler, jobs chan job, ctx context.Context) error {
  	if err := p.SetControlMessage(ipv4.FlagInterface, true); err != nil {
  		return err
  	}
  	return Serve(&serveIfConn{ifIndex: ifIndex, conn: p}, handler, jobs, ctx)
  }
docs: // ServeIf does the same job as Serve(), but listens and responds on the
  // specified network interface (by index).  It also doubles as an example of
  // how to leverage the dhcp4.ServeConn interface.
  //
  // If your target only has one interface, use Serve(). ServeIf() requires an
  // import outside the std library.  Serving DHCP over multiple interfaces will
  // require your own dhcp4.ServeConn, as listening to broadcasts utilises all
  // interfaces (so you cannot have more than on listener).