RFC: Keeping track of online/offline status & central DNS service

Waldo Bastian bastian at kde.org
Thu Nov 25 11:11:59 GMT 2004


I have prepared some ideas for improving the general network experience, in 
particular for those use-cases where the internet connection is subject to 
availability (e.g. wireless or dial-up access)

This is just a first rough draft, your feedback is appreciated on all aspects 
of this.



A KDED Module that keeps track of the internet connection status and that
provides DNS lookup service with intelligent support for round-robin DNS.

Design goals

* Keeping track of online/offline status
* Prevent unneeded connection errors when the user is offline
* Make applications aware of online/offline status
* Improve dial-on-demand functionality to kick in only with
user-initiated actions.
* Improve dial-on-demand functionality by [optionally] being aware of the
local net topology and differentating between local addresses (always 
and internet addresses (availability subject to online/offline status)
* Improve handling of round-robin DNS by making sure that multiple
requests are all send to the same IP. (KDE BR63088)
* Improve handling of multiple DNS records by being aware of connection
failures to the primary IP and redirecting subsequent requests to
a secondary IP.

Proposed DCOP interface

enumOnlineStatus { Unknown = 0, OffLine = 1, Online = 2 }

enumOnlineStatus (int?) onlineStatus()
// Returns internet status, can be used by applications such as KMail /
// KWeather in deciding whether to do certain background activities

void setOnlineStatus(enumOnlineStatus (int?) )
// Sets internet status, to be used by kppp / kisdn or distribution specific
// tools

signal onlineStatusChanged(enumOnlineStatus (int?) )
// DCOP signal that gets emited whenever the onlineStatus changes

"list of resolved addresses" lookup("hostname", port, bool activateNetwork )
// resolve hostname, returns list of IP addresses
// alternative: returns only one IP address, if DNS returns multiple
// IP addresses it returns the most appropriate one
// activateNetwork: If true and hostname is not on local network and status is
// OffLine, request activation of network if possible or fail if no activation
// is possible
// activateNetwork: If false and hostname is not on local network and status
// is Offline, fail.

"try again" reportConnectionResult("hostname", port, "resolved address", 
// Function for application to report back whether connection was successfull
// Returns whether the application should try again (e.g. because
// online/offline status changed since the last lookup, or because another IP
// is available for this hostname)
// alternative: Instead of passing "hostname" and port, "resolved address"
// could contain a handle that identifies the lookup call responsible for this
// resolved address.

setNetworkActivationCallback(DCOPRef, function)
// Specify DCOP function that should be called in order to request activation
// of network
// To be used by kppp / kisdn or distribution specific tools

bastian at kde.org   |   Free Novell Linux Desktop 9 Evaluation Download
bastian at suse.com  |   http://www.novell.com/products/desktop/eval.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20041125/c632f82c/attachment.sig>

More information about the kde-core-devel mailing list