首页 > 其他分享 >使用 go-conntrack 包来实现 conntrack 会话的创建和删除

使用 go-conntrack 包来实现 conntrack 会话的创建和删除

时间:2023-04-21 21:12:38浏览次数:39  
标签:err nil 包来 创建 conntrack time go ct

package main

import (
    "fmt"
    "time"

    "github.com/florianl/go-conntrack"
)

func main() {
    // 创建 conntrack 客户端
    client, err := conntrack.Dial(nil)
    if err != nil {
        panic(err)
    }
    defer client.Close()

    // 创建 conntrack 对象
    ct, err := client.New()
    if err != nil {
        panic(err)
    }
    defer ct.Close()

    // 创建 conntrack 元组
    tuple := conntrack.Tuple{
        IPVersion: 4,
        Protocol:  conntrack.ProtocolUDP,
        OriginalSource: conntrack.Addr{
            IP:   [4]byte{127, 0, 0, 1},
            Port: 12345,
        },
        OriginalDestination: conntrack.Addr{
            IP:   [4]byte{127, 0, 0, 1},
            Port: 12346,
        },
    }

    // 创建 conntrack 属性
    attr := conntrack.Attribute{
        Type:  conntrack.AttrTimeout,
        Value: uint32(time.Second * 60 / time.Millisecond),
    }

    // 创建 conntrack 对象
    obj := conntrack.NewObject(tuple, attr)

    // 创建 conntrack 会话
    err = ct.Create(obj)
    if err != nil {
        panic(err)
    }

    fmt.Println("Conntrack session created")

    // 等待 5 秒钟
    time.Sleep(5 * time.Second)

    // 删除 conntrack 会话
    err = ct.Delete(obj)
    if err != nil {
        panic(err)
    }

    fmt.Println("Conntrack session deleted")
}

 

标签:err,nil,包来,创建,conntrack,time,go,ct
From: https://www.cnblogs.com/wangjq19920210/p/17341806.html

相关文章

  • 五个 Go 高级程序员时刻关注的问题 —— 你也在考虑吗?
    作为Go程序员,很容易陷入编写代码和解决问题的日常任务中。那么有经验的Go开发者在编写代码时会考虑哪些因素?他们在这方面积累了哪些经验教训?在本文中,我们将深入了解有经验的Go开发者的思维方式,看看他们真正在思考什么。让我们开始吧。1.规范为了促进代码库的一致性、......
  • cpp: Ten Sort Algotrthms
     //TenSortAlgorithms.h:此文件包含"TenSortAlgotrthms"类。十个常用排序算法C++11//2023年4月5日涂聚文GeovinDuedit.#ifndefTENSORTALGORITHMS_H#defineTENSORTALGORITHMS_H#include<vector>//#includedirective#include<string>#include<......
  • Django框架——静态文件配置、form表单、request对象、连接数据库、ORM简介、ORM基本
    配置文件介绍SECRET_KEY='0yge9t5m9&%=of**qk2m9z^7-gp2db)g!*5dzb136ys0#)*%*a'#盐DEBUG=True#调试模式,等项目上线的时候,改成False#配置数据库DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3',#默认是自......
  • go特色
    1、switchcase默认是break的,可以省略break关键字。当然也可以显示break,那么就和其他语言一样了。参考:https://www.jianshu.com/p/3a5d2e7f09a8【话说现在简书要守不住底线了,跳出这么多垃圾广告,还是博客园干净,就是不知道能撑多久,据说有求救贴,但也没找着】......
  • (转)一文带你由浅入深地解读 Go Zap 的高性能
    原文:https://blog.csdn.net/EDDYCJY/article/details/117970643简介zap是什么?⚡ZAP[1] 是uber开源的提供快速,结构化,高性能的日志记录包。zap高性能体现在哪里?在介绍zap包的优化部分之前,让我们看下zap日志库的工作流程图大多数日志库提供的方式是基于反射的序列化和字......
  • Invalid prop: type check failed for prop "defaultExpandAll". Expected Boolean, g
    vue中使用element-ui报错如下,defaultExpandAll关键词页面也搜不到[Vuewarn]:Invalidprop:typecheckfailedforprop"defaultExpandAll".ExpectedBoolean,gotStringwithvalue"true".foundin---><ElTable>atpackages/table/src/table.vue......
  • go类型
    1、基本类型强转//interface{}转为其他类型【当然这个得保证是这个类型,否则肯定报错。最好先断言】varvinterface{}varainta=v.(int)//string转为int类型//uint32转为int【低精度往高精度转?】variuint32a=int(i)参考:https://blog.csdn.net/iamlihon......
  • go mod
    gomodtidy可能会修改指定的依赖版本号gomod的最小版本号选择的其实是选择所有package指定的mod的最大版本号你指定了v2.1.0,但是依赖的某一个包指定了v2.2.1,最终编译就使用v2.2.1来编译......
  • (转)跟我一起学Go系列:日志系统从入门到晋级
    原文:https://zhuanlan.zhihu.com/p/361930459日志模块在如今的应用中地位是如日中天,开发者没有日志就相当于双目失明,对程序的运行状态无法判断。Go也不例外提供了基础的日志调用模块:log模块。log模块主要提供了3类接口,分别是“Print、Panic、Fatal”,下面一起看看基础日......
  • golang中通过原始socket实现tcp/udp的服务端和客户端示例
    这些天稍微空点,总结下golang中通过tcp/udp实现服务端客户端的编程实现,毕竟长久以来,如果要截单的http服务,我们直接使用net/http包实现服务,或者使用框架如gin/echo/beego等。以下就直接上代码,稍微看看都能懂起。1.TCP的实现serverpackagemainimport( "bufio" "fmt" "net"......