parent
a8640f56d1
commit
0f8a39e5ac
|
@ -70,7 +70,7 @@ extern int dde_ipxe_nic_tx(unsigned if_index, const char *packet, unsigned packe
|
|||
*
|
||||
* \return 0 on success, -1 otherwise
|
||||
*/
|
||||
extern int dde_ipxe_nic_get_mac_addr(unsigned if_index, char *out_mac_addr);
|
||||
extern int dde_ipxe_nic_get_mac_addr(unsigned if_index, unsigned char *out_mac_addr);
|
||||
|
||||
/**
|
||||
* Get current link-state of device
|
||||
|
|
|
@ -271,7 +271,7 @@ int dde_ipxe_nic_tx(unsigned if_index, const char *packet, unsigned packet_len)
|
|||
}
|
||||
|
||||
|
||||
int dde_ipxe_nic_get_mac_addr(unsigned if_index, char *out_mac_addr)
|
||||
int dde_ipxe_nic_get_mac_addr(unsigned if_index, unsigned char *out_mac_addr)
|
||||
{
|
||||
if (if_index != 1)
|
||||
return -1;
|
||||
|
|
|
@ -198,26 +198,26 @@ class Net::Arp_packet
|
|||
/**
|
||||
* \return source MAC address.
|
||||
*/
|
||||
Ethernet_frame::Mac_address src_mac() {
|
||||
return Ethernet_frame::Mac_address(&_src_mac_addr); }
|
||||
Mac_address src_mac() {
|
||||
return Mac_address(&_src_mac_addr); }
|
||||
|
||||
/**
|
||||
* \return source IP address.
|
||||
*/
|
||||
Ipv4_packet::Ipv4_address src_ip() {
|
||||
return Ipv4_packet::Ipv4_address(&_src_ip_addr); }
|
||||
Ipv4_address src_ip() {
|
||||
return Ipv4_address(&_src_ip_addr); }
|
||||
|
||||
/**
|
||||
* \return destination MAC address.
|
||||
*/
|
||||
Ethernet_frame::Mac_address dst_mac() {
|
||||
return Ethernet_frame::Mac_address(&_dst_mac_addr); }
|
||||
Mac_address dst_mac() {
|
||||
return Mac_address(&_dst_mac_addr); }
|
||||
|
||||
/**
|
||||
* \return destination IP address.
|
||||
*/
|
||||
Ipv4_packet::Ipv4_address dst_ip() {
|
||||
return Ipv4_packet::Ipv4_address(&_dst_ip_addr); }
|
||||
Ipv4_address dst_ip() {
|
||||
return Ipv4_address(&_dst_ip_addr); }
|
||||
|
||||
|
||||
/******************************
|
||||
|
@ -237,7 +237,7 @@ class Net::Arp_packet
|
|||
*
|
||||
* \param src_mac_addr MAC address to set.
|
||||
*/
|
||||
void src_mac(Ethernet_frame::Mac_address src_mac_addr) {
|
||||
void src_mac(Mac_address src_mac_addr) {
|
||||
src_mac_addr.copy(&_src_mac_addr); }
|
||||
|
||||
/**
|
||||
|
@ -245,7 +245,7 @@ class Net::Arp_packet
|
|||
*
|
||||
* \param src_ip_addr IP address to set.
|
||||
*/
|
||||
void src_ip(Ipv4_packet::Ipv4_address src_ip_addr) {
|
||||
void src_ip(Ipv4_address src_ip_addr) {
|
||||
src_ip_addr.copy(&_src_ip_addr); }
|
||||
|
||||
/**
|
||||
|
@ -253,7 +253,7 @@ class Net::Arp_packet
|
|||
*
|
||||
* \param src_mac_addr MAC address to set.
|
||||
*/
|
||||
void dst_mac(Ethernet_frame::Mac_address dst_mac_addr) {
|
||||
void dst_mac(Mac_address dst_mac_addr) {
|
||||
dst_mac_addr.copy(&_dst_mac_addr); }
|
||||
|
||||
/**
|
||||
|
@ -261,7 +261,7 @@ class Net::Arp_packet
|
|||
*
|
||||
* \param src_ip_addr IP address to set.
|
||||
*/
|
||||
void dst_ip(Ipv4_packet::Ipv4_address dst_ip_addr) {
|
||||
void dst_ip(Ipv4_address dst_ip_addr) {
|
||||
dst_ip_addr.copy(&_dst_ip_addr); }
|
||||
|
||||
|
||||
|
|
|
@ -195,17 +195,17 @@ class Net::Dhcp_packet
|
|||
|
||||
bool broadcast() { return _flags & BROADCAST; }
|
||||
|
||||
Ipv4_packet::Ipv4_address ciaddr() {
|
||||
return Ipv4_packet::Ipv4_address(&_ciaddr); }
|
||||
Ipv4_packet::Ipv4_address yiaddr() {
|
||||
return Ipv4_packet::Ipv4_address(&_yiaddr); }
|
||||
Ipv4_packet::Ipv4_address siaddr() {
|
||||
return Ipv4_packet::Ipv4_address(&_siaddr); }
|
||||
Ipv4_packet::Ipv4_address giaddr() {
|
||||
return Ipv4_packet::Ipv4_address(&_giaddr); }
|
||||
Ipv4_address ciaddr() {
|
||||
return Ipv4_address(&_ciaddr); }
|
||||
Ipv4_address yiaddr() {
|
||||
return Ipv4_address(&_yiaddr); }
|
||||
Ipv4_address siaddr() {
|
||||
return Ipv4_address(&_siaddr); }
|
||||
Ipv4_address giaddr() {
|
||||
return Ipv4_address(&_giaddr); }
|
||||
|
||||
Ethernet_frame::Mac_address client_mac() {
|
||||
return Ethernet_frame::Mac_address(&_chaddr); }
|
||||
Mac_address client_mac() {
|
||||
return Mac_address(&_chaddr); }
|
||||
|
||||
const char* server_name() { return (const char*) &_sname; }
|
||||
const char* file() { return (const char*) &_file; }
|
||||
|
@ -239,16 +239,16 @@ class Net::Dhcp_packet
|
|||
void broadcast(bool broadcast) {
|
||||
_flags = broadcast ? BROADCAST : 0; }
|
||||
|
||||
void ciaddr(Ipv4_packet::Ipv4_address ciaddr) {
|
||||
void ciaddr(Ipv4_address ciaddr) {
|
||||
ciaddr.copy(&_ciaddr); }
|
||||
void yiaddr(Ipv4_packet::Ipv4_address yiaddr) {
|
||||
void yiaddr(Ipv4_address yiaddr) {
|
||||
yiaddr.copy(&_yiaddr); }
|
||||
void siaddr(Ipv4_packet::Ipv4_address siaddr) {
|
||||
void siaddr(Ipv4_address siaddr) {
|
||||
siaddr.copy(&_siaddr); }
|
||||
void giaddr(Ipv4_packet::Ipv4_address giaddr) {
|
||||
void giaddr(Ipv4_address giaddr) {
|
||||
giaddr.copy(&_giaddr); }
|
||||
|
||||
void client_mac(Ethernet_frame::Mac_address mac) {
|
||||
void client_mac(Mac_address mac) {
|
||||
mac.copy(&_chaddr); }
|
||||
|
||||
|
||||
|
|
|
@ -16,11 +16,10 @@
|
|||
|
||||
/* Genode includes */
|
||||
#include <base/exception.h>
|
||||
#include <base/output.h>
|
||||
#include <util/string.h>
|
||||
|
||||
#include <util/endian.h>
|
||||
#include <net/netaddress.h>
|
||||
#include <net/mac_address.h>
|
||||
|
||||
namespace Net { class Ethernet_frame; }
|
||||
|
||||
|
@ -44,21 +43,6 @@ class Net::Ethernet_frame
|
|||
ADDR_LEN = 6, /* MAC address length in bytes */
|
||||
};
|
||||
|
||||
struct Mac_address : Network_address<ADDR_LEN>
|
||||
{
|
||||
using Network_address<ADDR_LEN>::Network_address;
|
||||
|
||||
void print(Genode::Output &output) const
|
||||
{
|
||||
using namespace Genode;
|
||||
|
||||
for (unsigned i = 0; i < ADDR_LEN; i++) {
|
||||
Genode::print(output, Hex(addr[i], Hex::OMIT_PREFIX,
|
||||
Hex::PAD));
|
||||
if (i < ADDR_LEN-1) output.out_char(':');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static const Mac_address BROADCAST; /* broadcast address */
|
||||
|
||||
|
|
|
@ -16,13 +16,18 @@
|
|||
|
||||
/* Genode */
|
||||
#include <base/exception.h>
|
||||
#include <base/output.h>
|
||||
#include <util/string.h>
|
||||
|
||||
#include <util/endian.h>
|
||||
#include <net/netaddress.h>
|
||||
|
||||
namespace Net { class Ipv4_packet; }
|
||||
namespace Net
|
||||
{
|
||||
enum { IPV4_ADDR_LEN = 4 };
|
||||
typedef Network_address<IPV4_ADDR_LEN, '.', false> Ipv4_address;
|
||||
|
||||
class Ipv4_packet;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -51,20 +56,7 @@ class Net::Ipv4_packet
|
|||
public:
|
||||
|
||||
enum Size {
|
||||
ADDR_LEN = 4, /* Ip address length in bytes */
|
||||
};
|
||||
|
||||
struct Ipv4_address : Network_address<ADDR_LEN>
|
||||
{
|
||||
using Network_address<ADDR_LEN>::Network_address;
|
||||
|
||||
void print(Genode::Output &output) const
|
||||
{
|
||||
for (unsigned i = 0; i < ADDR_LEN; i++) {
|
||||
Genode::print(output, (unsigned) addr[i]);
|
||||
if (i < ADDR_LEN-1) output.out_char('.');
|
||||
}
|
||||
}
|
||||
ADDR_LEN = IPV4_ADDR_LEN, /* Ip address length in bytes */
|
||||
};
|
||||
|
||||
static const Ipv4_address CURRENT; /* current network */
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
/*
|
||||
* \brief Ethernet network or MAC address
|
||||
* \author Martin Stein
|
||||
* \date 2016-06-22
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2016 Genode Labs GmbH
|
||||
*
|
||||
* This file is part of the Genode OS framework, which is distributed
|
||||
* under the terms of the GNU General Public License version 2.
|
||||
*/
|
||||
|
||||
#ifndef _NET__MAC_ADDRESS_H_
|
||||
#define _NET__MAC_ADDRESS_H_
|
||||
|
||||
/* OS includes */
|
||||
#include <net/netaddress.h>
|
||||
|
||||
namespace Net { using Mac_address = Net::Network_address<6, ':', true>; }
|
||||
|
||||
#endif /* _NET__MAC_ADDRESS_H_ */
|
|
@ -17,14 +17,15 @@
|
|||
/* Genode */
|
||||
#include <base/stdint.h>
|
||||
#include <util/string.h>
|
||||
#include <base/output.h>
|
||||
|
||||
namespace Net { template <unsigned> class Network_address; }
|
||||
namespace Net { template <unsigned, char, bool> class Network_address; }
|
||||
|
||||
|
||||
/**
|
||||
* Generic form of a network address.
|
||||
*/
|
||||
template <unsigned LEN>
|
||||
template <unsigned LEN, char DELIM, bool HEX>
|
||||
struct Net::Network_address
|
||||
{
|
||||
Genode::uint8_t addr[LEN];
|
||||
|
@ -47,6 +48,16 @@ struct Net::Network_address
|
|||
|
||||
void copy(void *dst) { Genode::memcpy(dst, addr, LEN); }
|
||||
|
||||
void print(Genode::Output &output) const
|
||||
{
|
||||
using namespace Genode;
|
||||
for (unsigned i = 0; i < LEN; i++) {
|
||||
if (!HEX) { Genode::print(output, (unsigned) addr[i]); }
|
||||
else { Genode::print(output, Hex(addr[i], Hex::OMIT_PREFIX, Hex::PAD)); }
|
||||
if (i < LEN - 1) output.out_char(DELIM);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***************
|
||||
** Operators **
|
||||
|
|
|
@ -110,8 +110,8 @@ class Net::Udp_packet
|
|||
* | 4 bytes | 4 bytes | 1 byte | 1 byte | 2 bytes |
|
||||
* --------------------------------------------------------------
|
||||
*/
|
||||
void calc_checksum(Ipv4_packet::Ipv4_address src,
|
||||
Ipv4_packet::Ipv4_address dst)
|
||||
void calc_checksum(Ipv4_address src,
|
||||
Ipv4_address dst)
|
||||
{
|
||||
/* have to reset the checksum field for calculation */
|
||||
_checksum = 0;
|
||||
|
|
|
@ -29,7 +29,7 @@ class Nic::Measurement
|
|||
|
||||
Timer::Connection &_timer;
|
||||
|
||||
Net::Ethernet_frame::Mac_address _mac;
|
||||
Net::Mac_address _mac;
|
||||
|
||||
struct stat
|
||||
{
|
||||
|
|
|
@ -15,16 +15,17 @@
|
|||
#define _INCLUDE__NIC_SESSION__NIC_SESSION_H_
|
||||
|
||||
#include <dataspace/capability.h>
|
||||
#include <base/output.h>
|
||||
#include <base/signal.h>
|
||||
#include <base/rpc.h>
|
||||
#include <session/session.h>
|
||||
#include <packet_stream_tx/packet_stream_tx.h>
|
||||
#include <packet_stream_rx/packet_stream_rx.h>
|
||||
#include <net/mac_address.h>
|
||||
|
||||
namespace Nic {
|
||||
|
||||
struct Mac_address;
|
||||
using Mac_address = Net::Mac_address;
|
||||
|
||||
struct Session;
|
||||
|
||||
using Genode::Packet_stream_sink;
|
||||
|
@ -34,22 +35,6 @@ namespace Nic {
|
|||
}
|
||||
|
||||
|
||||
struct Nic::Mac_address
|
||||
{
|
||||
enum { NUM_ELEM = 6 };
|
||||
|
||||
char addr[NUM_ELEM];
|
||||
|
||||
void print(Genode::Output &out) const
|
||||
{
|
||||
using Genode::Hex;
|
||||
for (unsigned i = 0; i < NUM_ELEM; i++)
|
||||
Genode::print(out, i > 0 ? ":" : "",
|
||||
Hex(addr[i], Hex::OMIT_PREFIX, Hex::PAD));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* NIC session interface
|
||||
*
|
||||
|
|
|
@ -13,4 +13,4 @@
|
|||
|
||||
#include <net/ethernet.h>
|
||||
|
||||
const Net::Ethernet_frame::Mac_address Net::Ethernet_frame::BROADCAST(0xFF);
|
||||
const Net::Mac_address Net::Ethernet_frame::BROADCAST(0xFF);
|
||||
|
|
|
@ -27,7 +27,7 @@ struct Scanner_policy_number
|
|||
typedef ::Genode::Token<Scanner_policy_number> Token;
|
||||
|
||||
|
||||
Ipv4_packet::Ipv4_address Ipv4_packet::ip_from_string(const char *ip)
|
||||
Ipv4_address Ipv4_packet::ip_from_string(const char *ip)
|
||||
{
|
||||
Ipv4_address ip_addr;
|
||||
Token t(ip);
|
||||
|
@ -78,5 +78,5 @@ Genode::uint16_t Ipv4_packet::calculate_checksum(Ipv4_packet const &packet)
|
|||
}
|
||||
|
||||
|
||||
const Ipv4_packet::Ipv4_address Ipv4_packet::CURRENT((Genode::uint8_t)0x00);
|
||||
const Ipv4_packet::Ipv4_address Ipv4_packet::BROADCAST((Genode::uint8_t)0xFF);
|
||||
const Ipv4_address Ipv4_packet::CURRENT((Genode::uint8_t)0x00);
|
||||
const Ipv4_address Ipv4_packet::BROADCAST((Genode::uint8_t)0xFF);
|
||||
|
|
|
@ -35,8 +35,8 @@ namespace Net {
|
|||
*/
|
||||
template <typename ADDRESS> class Address_node;
|
||||
|
||||
using Ipv4_address_node = Address_node<Ipv4_packet::Ipv4_address>;
|
||||
using Mac_address_node = Address_node<Ethernet_frame::Mac_address>;
|
||||
using Ipv4_address_node = Address_node<Ipv4_address>;
|
||||
using Mac_address_node = Address_node<Mac_address>;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ void Session_component::_unset_ipv4_node()
|
|||
bool Session_component::link_state() { return _nic.link_state(); }
|
||||
|
||||
|
||||
void Session_component::set_ipv4_address(Ipv4_packet::Ipv4_address ip_addr)
|
||||
void Session_component::set_ipv4_address(Ipv4_address ip_addr)
|
||||
{
|
||||
_unset_ipv4_node();
|
||||
_ipv4_node.addr(ip_addr);
|
||||
|
@ -113,7 +113,7 @@ Session_component::Session_component(Genode::Ram_session &ram,
|
|||
Genode::size_t amount,
|
||||
Genode::size_t tx_buf_size,
|
||||
Genode::size_t rx_buf_size,
|
||||
Ethernet_frame::Mac_address vmac,
|
||||
Mac_address vmac,
|
||||
Net::Nic &nic,
|
||||
char *ip_addr)
|
||||
: Stream_allocator(ram, rm, amount),
|
||||
|
@ -131,9 +131,9 @@ Session_component::Session_component(Genode::Ram_session &ram,
|
|||
|
||||
/* static ip parsing */
|
||||
if (ip_addr != 0 && Genode::strlen(ip_addr)) {
|
||||
Ipv4_packet::Ipv4_address ip = Ipv4_packet::ip_from_string(ip_addr);
|
||||
Ipv4_address ip = Ipv4_packet::ip_from_string(ip_addr);
|
||||
|
||||
if (ip == Ipv4_packet::Ipv4_address()) {
|
||||
if (ip == Ipv4_address()) {
|
||||
Genode::warning("Empty or error ip address. Skipped.");
|
||||
} else {
|
||||
set_ipv4_address(ip);
|
||||
|
|
|
@ -120,15 +120,15 @@ class Net::Session_component : public Net::Stream_allocator,
|
|||
* \param rx_buf_size buffer size for rx channel
|
||||
* \param vmac virtual mac address
|
||||
*/
|
||||
Session_component(Genode::Ram_session &ram,
|
||||
Genode::Region_map &rm,
|
||||
Genode::Entrypoint &ep,
|
||||
Genode::size_t amount,
|
||||
Genode::size_t tx_buf_size,
|
||||
Genode::size_t rx_buf_size,
|
||||
Ethernet_frame::Mac_address vmac,
|
||||
Net::Nic &nic,
|
||||
char *ip_addr = 0);
|
||||
Session_component(Genode::Ram_session &ram,
|
||||
Genode::Region_map &rm,
|
||||
Genode::Entrypoint &ep,
|
||||
Genode::size_t amount,
|
||||
Genode::size_t tx_buf_size,
|
||||
Genode::size_t rx_buf_size,
|
||||
Mac_address vmac,
|
||||
Net::Nic &nic,
|
||||
char *ip_addr = 0);
|
||||
|
||||
~Session_component();
|
||||
|
||||
|
@ -146,7 +146,7 @@ class Net::Session_component : public Net::Stream_allocator,
|
|||
Genode::Signal_transmitter(_link_state_sigh).submit();
|
||||
}
|
||||
|
||||
void set_ipv4_address(Ipv4_packet::Ipv4_address ip_addr);
|
||||
void set_ipv4_address(Ipv4_address ip_addr);
|
||||
|
||||
|
||||
/****************************************
|
||||
|
|
|
@ -18,4 +18,4 @@
|
|||
* it's likely, that we will have no clashes here.
|
||||
* (e.g. Linux uses 02:00... for its tap-devices.)
|
||||
*/
|
||||
Net::Ethernet_frame::Mac_address Net::Mac_allocator::mac_addr_base(0x02);
|
||||
Net::Mac_address Net::Mac_allocator::mac_addr_base(0x02);
|
||||
|
|
|
@ -45,7 +45,7 @@ namespace Net {
|
|||
|
||||
|
||||
/* reference MAC address */
|
||||
static Ethernet_frame::Mac_address mac_addr_base;
|
||||
static Mac_address mac_addr_base;
|
||||
|
||||
Mac_allocator() { Genode::memset(&_msbs, 0, sizeof(_msbs)); }
|
||||
|
||||
|
@ -56,12 +56,12 @@ namespace Net {
|
|||
* \throws Alloc_failed if no more MAC addresses are available.
|
||||
* \return MAC address
|
||||
*/
|
||||
Ethernet_frame::Mac_address alloc()
|
||||
Mac_address alloc()
|
||||
{
|
||||
for (int i=0; i < MSB_MAX; i++) {
|
||||
if (!_msbs[i].used) {
|
||||
_msbs[i].used = 1;
|
||||
Ethernet_frame::Mac_address mac = mac_addr_base;
|
||||
Mac_address mac = mac_addr_base;
|
||||
mac.addr[5] = i;
|
||||
return mac;
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ namespace Net {
|
|||
/**
|
||||
* Frees a formerly allocated MAC address.
|
||||
*/
|
||||
void free(Ethernet_frame::Mac_address mac) {
|
||||
void free(Mac_address mac) {
|
||||
_msbs[(unsigned)mac.addr[5]].used = 0; }
|
||||
};
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ struct Main
|
|||
handle_config();
|
||||
|
||||
/* show MAC address to use */
|
||||
Net::Ethernet_frame::Mac_address mac(nic.mac());
|
||||
Net::Mac_address mac(nic.mac());
|
||||
Genode::log("--- NIC bridge started (mac=", mac, ") ---");
|
||||
|
||||
/* announce at parent */
|
||||
|
|
|
@ -42,7 +42,7 @@ bool Net::Nic::handle_arp(Ethernet_frame *eth, Genode::size_t size) {
|
|||
* and destination MAC and IP addresses, and set the opcode
|
||||
* to reply, and then push the packet back to the NIC driver.
|
||||
*/
|
||||
Ipv4_packet::Ipv4_address old_src_ip = arp->src_ip();
|
||||
Ipv4_address old_src_ip = arp->src_ip();
|
||||
arp->opcode(Arp_packet::REPLY);
|
||||
arp->dst_mac(arp->src_mac());
|
||||
arp->src_mac(mac());
|
||||
|
|
|
@ -33,14 +33,14 @@ class Net::Nic : public Net::Packet_handler
|
|||
|
||||
::Nic::Packet_allocator _tx_block_alloc;
|
||||
::Nic::Connection _nic;
|
||||
Ethernet_frame::Mac_address _mac;
|
||||
Mac_address _mac;
|
||||
|
||||
public:
|
||||
|
||||
Nic(Genode::Entrypoint&, Genode::Heap&, Vlan&);
|
||||
|
||||
::Nic::Connection *nic() { return &_nic; }
|
||||
Ethernet_frame::Mac_address mac() { return _mac; }
|
||||
Mac_address mac() { return _mac; }
|
||||
|
||||
bool link_state() { return _nic.link_state(); }
|
||||
|
||||
|
|
|
@ -58,7 +58,8 @@ class Nic::Loopback_component : public Nic::Session_component
|
|||
|
||||
Mac_address mac_address() override
|
||||
{
|
||||
Mac_address result = {{1,2,3,4,5,6}};
|
||||
char buf[] = {1,2,3,4,5,6};
|
||||
Mac_address result((void*)buf);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ class Nic_worker : public Genode::Thread_deprecated<STACK_SIZE>
|
|||
private:
|
||||
|
||||
Nic::Connection *_nic; /* nic-session */
|
||||
Net::Ethernet_frame::Mac_address _mac;
|
||||
Net::Mac_address _mac;
|
||||
|
||||
struct stat {
|
||||
Genode::uint64_t size;
|
||||
|
|
|
@ -81,7 +81,7 @@ class Openvpn_component : public Tuntap_device,
|
|||
{
|
||||
private:
|
||||
|
||||
Nic::Mac_address _mac_addr {{ 0x02, 0x00, 0x00, 0x00, 0x00, 0x01 }};
|
||||
Nic::Mac_address _mac_addr;
|
||||
|
||||
char const *_packet;
|
||||
|
||||
|
@ -138,6 +138,8 @@ class Openvpn_component : public Tuntap_device,
|
|||
Server::Entrypoint &ep)
|
||||
: Session_component(tx_buf_size, rx_buf_size, rx_block_md_alloc, ram_session, ep)
|
||||
{
|
||||
char buf[] = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x01 };
|
||||
_mac_addr = Nic::Mac_address((void*)buf);
|
||||
if (pipe(_pipefd)) {
|
||||
Genode::error("could not create pipe");
|
||||
throw Genode::Exception();
|
||||
|
|
Loading…
Reference in New Issue