mirror of https://gogs.blitter.com/RLabs/xs
Added max bounds for chaff, rekey intervals and random jitter for rekey interval
This commit is contained in:
parent
faf8769ac4
commit
6212119621
2
Makefile
2
Makefile
|
@ -1,4 +1,4 @@
|
||||||
VERSION := 0.9.7
|
VERSION := 0.9.8
|
||||||
.PHONY: lint vis clean common client server passwd\
|
.PHONY: lint vis clean common client server passwd\
|
||||||
subpkgs install uninstall reinstall scc
|
subpkgs install uninstall reinstall scc
|
||||||
|
|
||||||
|
|
|
@ -136,5 +136,7 @@ type CSHmacAlg uint32
|
||||||
// Some bounds-checking consts
|
// Some bounds-checking consts
|
||||||
const (
|
const (
|
||||||
REKEY_SECS_MIN = 1
|
REKEY_SECS_MIN = 1
|
||||||
|
REKEY_SECS_MAX = 28800 // 8 hours
|
||||||
CHAFF_FREQ_MSECS_MIN = 1
|
CHAFF_FREQ_MSECS_MIN = 1
|
||||||
|
CHAFF_FREQ_MSECS_MAX = 300000 // 5 minutes
|
||||||
)
|
)
|
||||||
|
|
27
xsnet/net.go
27
xsnet/net.go
|
@ -1600,6 +1600,16 @@ func (hc *Conn) ShutdownChaff() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (hc *Conn) SetupChaff(msecsMin uint, msecsMax uint, szMax uint) {
|
func (hc *Conn) SetupChaff(msecsMin uint, msecsMax uint, szMax uint) {
|
||||||
|
// Enforce bounds on chaff frequency and pkt size
|
||||||
|
hc.Lock()
|
||||||
|
if hc.chaff.msecsMin < CHAFF_FREQ_MSECS_MIN {
|
||||||
|
hc.chaff.msecsMin = CHAFF_FREQ_MSECS_MIN
|
||||||
|
}
|
||||||
|
if hc.chaff.msecsMax > CHAFF_FREQ_MSECS_MAX {
|
||||||
|
hc.chaff.msecsMax = CHAFF_FREQ_MSECS_MAX
|
||||||
|
}
|
||||||
|
hc.Unlock()
|
||||||
|
|
||||||
hc.chaff.msecsMin = msecsMin //move these to params of chaffHelper() ?
|
hc.chaff.msecsMin = msecsMin //move these to params of chaffHelper() ?
|
||||||
hc.chaff.msecsMax = msecsMax
|
hc.chaff.msecsMax = msecsMax
|
||||||
hc.chaff.szMax = szMax
|
hc.chaff.szMax = szMax
|
||||||
|
@ -1615,6 +1625,9 @@ func (hc *Conn) RekeyHelper(intervalSecs uint) {
|
||||||
if intervalSecs < REKEY_SECS_MIN {
|
if intervalSecs < REKEY_SECS_MIN {
|
||||||
intervalSecs = REKEY_SECS_MIN
|
intervalSecs = REKEY_SECS_MIN
|
||||||
}
|
}
|
||||||
|
if intervalSecs > REKEY_SECS_MAX {
|
||||||
|
intervalSecs = REKEY_SECS_MAX
|
||||||
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
hc.Lock()
|
hc.Lock()
|
||||||
|
@ -1625,7 +1638,14 @@ func (hc *Conn) RekeyHelper(intervalSecs uint) {
|
||||||
hc.Lock()
|
hc.Lock()
|
||||||
rekey := hc.rekey
|
rekey := hc.rekey
|
||||||
hc.Unlock()
|
hc.Unlock()
|
||||||
|
|
||||||
if rekey != 0 {
|
if rekey != 0 {
|
||||||
|
jitter := rand.Intn(int(rekey)) / 4
|
||||||
|
rekey = rekey - uint(jitter)
|
||||||
|
if rekey < 1 {
|
||||||
|
rekey = 1
|
||||||
|
}
|
||||||
|
|
||||||
//logger.LogDebug(fmt.Sprintf("[rekeyHelper Loop]\n"))
|
//logger.LogDebug(fmt.Sprintf("[rekeyHelper Loop]\n"))
|
||||||
time.Sleep(time.Duration(rekey) * time.Second)
|
time.Sleep(time.Duration(rekey) * time.Second)
|
||||||
|
|
||||||
|
@ -1656,13 +1676,6 @@ func (hc *Conn) RekeyHelper(intervalSecs uint) {
|
||||||
|
|
||||||
// Helper routine to spawn a chaffing goroutine for each Conn
|
// Helper routine to spawn a chaffing goroutine for each Conn
|
||||||
func (hc *Conn) chaffHelper() {
|
func (hc *Conn) chaffHelper() {
|
||||||
// Enforce bounds on chaff frequency and pkt size
|
|
||||||
hc.Lock()
|
|
||||||
if hc.chaff.msecsMin < CHAFF_FREQ_MSECS_MIN {
|
|
||||||
hc.chaff.msecsMin = CHAFF_FREQ_MSECS_MIN
|
|
||||||
}
|
|
||||||
hc.Unlock()
|
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
var nextDuration int
|
var nextDuration int
|
||||||
for {
|
for {
|
||||||
|
|
Loading…
Reference in New Issue