/* SPDX-License-Identifier: MIT * * Phobos */ package phobos import ( "net/netip" "time" ) type maskerSTUN struct { rng rng32 } func (m *maskerSTUN) TimerInterval() time.Duration { return 10 * time.Second } func (m *maskerSTUN) OnHandshakeRequest(sendForward SendFunc) { sendBindingRequest(sendForward, &m.rng) } func (m *maskerSTUN) OnDataUnwrap(buf []byte, length int, src netip.AddrPort, sendBack SendFunc) int { if !stunHasMagic(buf[:length]) { return -1 } return stunHandleIncoming(buf, length, src, sendBack) } func (m *maskerSTUN) OnDataWrap(buf []byte, length int) int { return stunWrapDataIndication(buf, length, &m.rng) } func (m *maskerSTUN) OnTimer(sendToServer SendFunc) { sendBindingRequest(sendToServer, &m.rng) }