From: Dan Williams <dcbw@redhat.com>
To: Haiyang Zhang <haiyangz@microsoft.com>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>
Subject: Re: question: Any way to trigger DHCP renewal from kernel code?
Date: Fri, 23 May 2014 10:06:56 -0500 [thread overview]
Message-ID: <1400857616.18322.9.camel@dcbw.local> (raw)
In-Reply-To: <c64a7b76572942fda9acffc25dd76c29@DFM-DB3MBX15-06.exchange.corp.microsoft.com>
On Thu, 2014-05-22 at 22:24 +0000, Haiyang Zhang wrote:
> Hi,
>
> Our synthetic network driver is notified when the Hyper-V host
> resume from sleep/hibernation. We need to renew DHCP in this case.
> I'm looking for a way to trigger DHCP renewal from kernel mode
> code.
Another approach could be to change the 'operstate' of your synthetic
netdevice to IF_OPER_DORMANT and then back to IF_OPER_UP. Possibly like
drivers/net/hsr/hsr_device.c does in __hsr_set_operstate().
The netdev_state_change() call will send out a netlink message that the
device has changed, which includes the device flags. Before changing
the operstate, the flags will include IFF_RUNNING, which indicates the
netdevice is operating and passing traffic. When you change the
operstate to IF_OPER_DORMANT, a netlink message will be sent which does
*not* include IFF_RUNNING. Then changing back to IF_OPER_UP will emit a
netlink message that *does* include IFF_RUNNING again.
The DHCP client can listen for device flag changes and trigger a DHCP
renew when the IFF_RUNNING flag re-appears on the device. There are
some notes about this in Documentation/networking/operstates.txt too.
(Random note: long ago when WiMAX was relevant there was also a need to
trigger a DHCP renew in userspace based on events from the driver; a
renew should be performed when the device comes out of fast sleep, which
can happen quite often. I don't remember how Inaky solved this, but I
think it was out-of-band driver messages to the userspace control
daemon. A more standardized kernel facility somewhat less convoluted
than manually munging operstates would have been nice...)
Dan
next prev parent reply other threads:[~2014-05-23 15:06 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-22 22:24 question: Any way to trigger DHCP renewal from kernel code? Haiyang Zhang
2014-05-23 0:49 ` Vlad Yasevich
2014-05-23 9:20 ` zhuyj
2014-05-23 15:06 ` Dan Williams [this message]
2014-05-23 15:19 ` Haiyang Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1400857616.18322.9.camel@dcbw.local \
--to=dcbw@redhat.com \
--cc=haiyangz@microsoft.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.