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 {