Serenity Operating System
at master 39 lines 989 B view raw
1/* 2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <AK/Singleton.h> 8#include <Kernel/Net/LoopbackAdapter.h> 9 10namespace Kernel { 11 12static bool s_loopback_initialized = false; 13 14LockRefPtr<LoopbackAdapter> LoopbackAdapter::try_create() 15{ 16 auto interface_name = KString::try_create("loop"sv); 17 if (interface_name.is_error()) 18 return {}; 19 return adopt_lock_ref_if_nonnull(new LoopbackAdapter(interface_name.release_value())); 20} 21 22LoopbackAdapter::LoopbackAdapter(NonnullOwnPtr<KString> interface_name) 23 : NetworkAdapter(move(interface_name)) 24{ 25 VERIFY(!s_loopback_initialized); 26 s_loopback_initialized = true; 27 set_mtu(65536); 28 set_mac_address({ 19, 85, 2, 9, 0x55, 0xaa }); 29} 30 31LoopbackAdapter::~LoopbackAdapter() = default; 32 33void LoopbackAdapter::send_raw(ReadonlyBytes payload) 34{ 35 dbgln("LoopbackAdapter: Sending {} byte(s) to myself.", payload.size()); 36 did_receive(payload); 37} 38 39}