mirror of
https://github.com/juanfont/headscale.git
synced 2025-11-10 01:20:58 +01:00
types/change: add NodeEndpoint and NodeDERP change types
Add specific change types for endpoint and DERP region updates, enabling lightweight patch responses instead of full map updates. Also fix NodeOnline/NodeOffline to accept NodeView and properly extract IsSubnetRouter flag, fixing a bug where subnet routers would incorrectly receive patch responses instead of full maps.
This commit is contained in:
parent
c66430c670
commit
28435e3837
@ -29,11 +29,13 @@ const (
|
|||||||
ExtraRecords Change = 13
|
ExtraRecords Change = 13
|
||||||
|
|
||||||
// Node changes.
|
// Node changes.
|
||||||
NodeCameOnline Change = 21
|
NodeCameOnline Change = 21
|
||||||
NodeWentOffline Change = 22
|
NodeWentOffline Change = 22
|
||||||
NodeRemove Change = 23
|
NodeRemove Change = 23
|
||||||
NodeKeyExpiry Change = 24
|
NodeKeyExpiry Change = 24
|
||||||
NodeNewOrUpdate Change = 25
|
NodeNewOrUpdate Change = 25
|
||||||
|
NodeEndpoint Change = 26
|
||||||
|
NodeDERP Change = 27
|
||||||
|
|
||||||
// User changes.
|
// User changes.
|
||||||
UserNewOrUpdate Change = 51
|
UserNewOrUpdate Change = 51
|
||||||
@ -174,17 +176,19 @@ func NodeRemoved(id types.NodeID) ChangeSet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NodeOnline(id types.NodeID) ChangeSet {
|
func NodeOnline(node types.NodeView) ChangeSet {
|
||||||
return ChangeSet{
|
return ChangeSet{
|
||||||
Change: NodeCameOnline,
|
Change: NodeCameOnline,
|
||||||
NodeID: id,
|
NodeID: node.ID(),
|
||||||
|
IsSubnetRouter: node.IsSubnetRouter(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NodeOffline(id types.NodeID) ChangeSet {
|
func NodeOffline(node types.NodeView) ChangeSet {
|
||||||
return ChangeSet{
|
return ChangeSet{
|
||||||
Change: NodeWentOffline,
|
Change: NodeWentOffline,
|
||||||
NodeID: id,
|
NodeID: node.ID(),
|
||||||
|
IsSubnetRouter: node.IsSubnetRouter(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,6 +200,20 @@ func KeyExpiry(id types.NodeID, expiry time.Time) ChangeSet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func EndpointUpdate(id types.NodeID) ChangeSet {
|
||||||
|
return ChangeSet{
|
||||||
|
Change: NodeEndpoint,
|
||||||
|
NodeID: id,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func DERPUpdate(id types.NodeID) ChangeSet {
|
||||||
|
return ChangeSet{
|
||||||
|
Change: NodeDERP,
|
||||||
|
NodeID: id,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func UserAdded(id types.UserID) ChangeSet {
|
func UserAdded(id types.UserID) ChangeSet {
|
||||||
return ChangeSet{
|
return ChangeSet{
|
||||||
Change: UserNewOrUpdate,
|
Change: UserNewOrUpdate,
|
||||||
|
|||||||
@ -18,6 +18,8 @@ func _() {
|
|||||||
_ = x[NodeRemove-23]
|
_ = x[NodeRemove-23]
|
||||||
_ = x[NodeKeyExpiry-24]
|
_ = x[NodeKeyExpiry-24]
|
||||||
_ = x[NodeNewOrUpdate-25]
|
_ = x[NodeNewOrUpdate-25]
|
||||||
|
_ = x[NodeEndpoint-26]
|
||||||
|
_ = x[NodeDERP-27]
|
||||||
_ = x[UserNewOrUpdate-51]
|
_ = x[UserNewOrUpdate-51]
|
||||||
_ = x[UserRemove-52]
|
_ = x[UserRemove-52]
|
||||||
}
|
}
|
||||||
@ -26,13 +28,13 @@ const (
|
|||||||
_Change_name_0 = "ChangeUnknown"
|
_Change_name_0 = "ChangeUnknown"
|
||||||
_Change_name_1 = "Full"
|
_Change_name_1 = "Full"
|
||||||
_Change_name_2 = "PolicyDERPExtraRecords"
|
_Change_name_2 = "PolicyDERPExtraRecords"
|
||||||
_Change_name_3 = "NodeCameOnlineNodeWentOfflineNodeRemoveNodeKeyExpiryNodeNewOrUpdate"
|
_Change_name_3 = "NodeCameOnlineNodeWentOfflineNodeRemoveNodeKeyExpiryNodeNewOrUpdateNodeEndpointNodeDERP"
|
||||||
_Change_name_4 = "UserNewOrUpdateUserRemove"
|
_Change_name_4 = "UserNewOrUpdateUserRemove"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_Change_index_2 = [...]uint8{0, 6, 10, 22}
|
_Change_index_2 = [...]uint8{0, 6, 10, 22}
|
||||||
_Change_index_3 = [...]uint8{0, 14, 29, 39, 52, 67}
|
_Change_index_3 = [...]uint8{0, 14, 29, 39, 52, 67, 79, 87}
|
||||||
_Change_index_4 = [...]uint8{0, 15, 25}
|
_Change_index_4 = [...]uint8{0, 15, 25}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -45,7 +47,7 @@ func (i Change) String() string {
|
|||||||
case 11 <= i && i <= 13:
|
case 11 <= i && i <= 13:
|
||||||
i -= 11
|
i -= 11
|
||||||
return _Change_name_2[_Change_index_2[i]:_Change_index_2[i+1]]
|
return _Change_name_2[_Change_index_2[i]:_Change_index_2[i+1]]
|
||||||
case 21 <= i && i <= 25:
|
case 21 <= i && i <= 27:
|
||||||
i -= 21
|
i -= 21
|
||||||
return _Change_name_3[_Change_index_3[i]:_Change_index_3[i+1]]
|
return _Change_name_3[_Change_index_3[i]:_Change_index_3[i+1]]
|
||||||
case 51 <= i && i <= 52:
|
case 51 <= i && i <= 52:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user