From 9de96be3757f88e4cdda2c4a5debb82ffad95e39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 11 Aug 2010 13:18:36 +0000 Subject: [PATCH] * Added methods to get/set the media/metric. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38024 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/os/net/NetworkInterface.h | 4 ++ .../network/libnetapi/NetworkInterface.cpp | 40 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/headers/os/net/NetworkInterface.h b/headers/os/net/NetworkInterface.h index 38fb4419e4..31a7795a8f 100644 --- a/headers/os/net/NetworkInterface.h +++ b/headers/os/net/NetworkInterface.h @@ -67,12 +67,16 @@ public: uint32 Index() const; uint32 Flags() const; uint32 MTU() const; + uint32 Media() const; + uint32 Metric() const; uint32 Type() const; status_t GetStats(ifreq_stats& stats); bool HasLink() const; status_t SetFlags(uint32 flags); status_t SetMTU(uint32 mtu); + status_t SetMedia(uint32 media); + status_t SetMetric(uint32 metric); int32 CountAddresses() const; status_t GetAddressAt(int32 index, diff --git a/src/kits/network/libnetapi/NetworkInterface.cpp b/src/kits/network/libnetapi/NetworkInterface.cpp index 52010bfe0a..7ab5bd3d10 100644 --- a/src/kits/network/libnetapi/NetworkInterface.cpp +++ b/src/kits/network/libnetapi/NetworkInterface.cpp @@ -220,6 +220,28 @@ BNetworkInterface::MTU() const } +uint32 +BNetworkInterface::Media() const +{ + ifreq request; + if (do_request(request, Name(), SIOCGIFMEDIA) != B_OK) + return 0; + + return request.ifr_media; +} + + +uint32 +BNetworkInterface::Metric() const +{ + ifreq request; + if (do_request(request, Name(), SIOCGIFMETRIC) != B_OK) + return 0; + + return request.ifr_metric; +} + + uint32 BNetworkInterface::Type() const { @@ -269,6 +291,24 @@ BNetworkInterface::SetMTU(uint32 mtu) } +status_t +BNetworkInterface::SetMedia(uint32 media) +{ + ifreq request; + request.ifr_media = media; + return do_request(request, Name(), SIOCSIFMEDIA); +} + + +status_t +BNetworkInterface::SetMetric(uint32 metric) +{ + ifreq request; + request.ifr_metric = metric; + return do_request(request, Name(), SIOCSIFMETRIC); +} + + int32 BNetworkInterface::CountAddresses() const {