当前位置: 首页>>代码示例>>Golang>>正文


Golang C.u_int32_t函数代码示例

本文整理汇总了Golang中C.u_int32_t函数的典型用法代码示例。如果您正苦于以下问题:Golang u_int32_t函数的具体用法?Golang u_int32_t怎么用?Golang u_int32_t使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了u_int32_t函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: NewRing

// NewRing creates a new PFRing.  Note that when the ring is initially created,
// it is disabled.  The caller must call Enable to start receiving packets.
// The caller should call Close on the given ring when finished with it.
func NewRing(device string, snaplen uint32, flags Flag) (ring *Ring, _ error) {
	dev := C.CString(device)
	defer C.free(unsafe.Pointer(dev))

	cptr, err := C.pfring_open(dev, C.u_int32_t(snaplen), C.u_int32_t(flags))
	if cptr == nil || err != nil {
		return nil, fmt.Errorf("pfring NewRing error: %v", err)
	}
	ring = &Ring{cptr: cptr, snaplen: int(snaplen)}
	ring.SetApplicationName(os.Args[0])
	return
}
开发者ID:jcantrill,项目名称:geard,代码行数:15,代码来源:pfring.go

示例2: OpenBDB

func OpenBDB(env Environment, txn Transaction, file string, database *string, dbtype DbType, flags DbFlag, mode int) (*BerkeleyDB, error) {
	cFile := C.CString(file)
	defer C.free(unsafe.Pointer(cFile))

	var cDatabase *C.char
	if database != nil {
		cDatabase = C.CString(*database)
		defer C.free(unsafe.Pointer(cDatabase))
	}

	var db *BerkeleyDB = new(BerkeleyDB)

	//The flags parameter is currently unused, and must be set to 0.
	// https://docs.oracle.com/cd/E17276_01/html/api_reference/C/dbcreate.html
	err := Err(C.db_create(&db.ptr, env.ptr, 0))
	if err != nil {
		return nil, err
	}

	err = Err(C.db_open(db.ptr, txn.ptr, cFile, cDatabase, C.DBTYPE(dbtype), C.u_int32_t(flags), C.int(mode)))
	if err != nil {
		db.Close(0)
		return nil, err
	}
	return db, ok
}
开发者ID:ajiyoshi-vg,项目名称:goberkeleydb,代码行数:26,代码来源:berkeleydb_c.go

示例3: Put

func (db BerkeleyDB) Put(txn Transaction, key, val []byte, flags DbFlag) error {
	cKey := AllocDBT(key)
	defer cKey.Free()
	cVal := AllocDBT(val)
	defer cVal.Free()

	return Err(C.db_put(db.ptr, txn.ptr, cKey, cVal, C.u_int32_t(flags)))
}
开发者ID:ajiyoshi-vg,项目名称:goberkeleydb,代码行数:8,代码来源:berkeleydb_c.go

示例4: NewCursor

func (db BerkeleyDB) NewCursor(txn Transaction, flags DbFlag) (*Cursor, error) {
	ret := new(Cursor)
	err := Err(C.db_cursor(db.ptr, txn.ptr, &ret.ptr, C.u_int32_t(flags)))
	if err != nil {
		return nil, err
	}
	return ret, ok
}
开发者ID:ajiyoshi-vg,项目名称:goberkeleydb,代码行数:8,代码来源:berkeleydb_c.go

示例5: AllocDBT

func AllocDBT(val []byte) *C.DBT {
	return &C.DBT{
		// someday we will be able to use C.CBytes() for this purpose
		// https://github.com/golang/go/issues/14838
		data:  unsafe.Pointer(C.CString(string(val))),
		size:  C.u_int32_t(len(val)),
		flags: C.DB_DBT_USERMEM,
	}
}
开发者ID:ajiyoshi-vg,项目名称:goberkeleydb,代码行数:9,代码来源:berkeleydb_c.go

示例6: NewRing

// NewRing creates a new PFRing.  Note that when the ring is initially created,
// it is disabled.  The caller must call Enable to start receiving packets.
// The caller should call Close on the given ring when finished with it.
func NewRing(device string, snaplen uint32, flags Flag) (ring *Ring, _ error) {
	dev := C.CString(device)
	defer C.free(unsafe.Pointer(dev))

	cptr, err := C.pfring_open(dev, C.u_int32_t(snaplen), C.u_int32_t(flags))
	if cptr == nil || err != nil {
		return nil, fmt.Errorf("pfring NewRing error: %v", err)
	}
	ring = &Ring{cptr: cptr, snaplen: int(snaplen)}

	if flags&FlagLongHeader == FlagLongHeader {
		ring.useExtendedPacketHeader = true
	} else {
		ifc, err := net.InterfaceByName(device)
		if err == nil {
			ring.interfaceIndex = ifc.Index
		}
	}
	ring.SetApplicationName(os.Args[0])
	return
}
开发者ID:jesseward,项目名称:gopacket,代码行数:24,代码来源:pfring.go

示例7: CursorGetRaw

func (cursor Cursor) CursorGetRaw(flags DbFlag) ([]byte, []byte, error) {
	key := C.DBT{flags: C.DB_DBT_REALLOC}
	defer C.free(key.data)
	val := C.DBT{flags: C.DB_DBT_REALLOC}
	defer C.free(val.data)

	err := Err(C.db_cursor_get(cursor.ptr, &key, &val, C.u_int32_t(flags)))
	if err != nil {
		return nil, nil, err
	}
	return cloneToBytes(&key), cloneToBytes(&val), ok
}
开发者ID:ajiyoshi-vg,项目名称:goberkeleydb,代码行数:12,代码来源:berkeleydb_c.go

示例8: Close

func (env Environment) Close(flags DbFlag) error {
	if env.ptr == nil {
		return ok
	}

	err := Err(C.db_env_close(env.ptr, C.u_int32_t(flags)))
	if err != nil {
		return err
	}

	env.ptr = nil
	return ok
}
开发者ID:ajiyoshi-vg,项目名称:goberkeleydb,代码行数:13,代码来源:berkeleydb_c.go

示例9: Get

func (db BerkeleyDB) Get(txn Transaction, key []byte, flags DbFlag) ([]byte, error) {
	data := &C.DBT{flags: C.DB_DBT_REALLOC}
	defer data.Free()

	cKey := AllocDBT(key)
	defer cKey.Free()

	err := Err(C.db_get(db.ptr, txn.ptr, cKey, data, C.u_int32_t(flags)))
	if err != nil {
		return nil, err
	}

	return cloneToBytes(data), ok
}
开发者ID:ajiyoshi-vg,项目名称:goberkeleydb,代码行数:14,代码来源:berkeleydb_c.go

示例10: Queues

// Queues returns all queues in pf.
func (p *OpenPf) Queues() ([]Queue, error) {
	pq := &C.struct_pfioc_queue{}
	pqs := &C.struct_pfioc_qstats{}
	hfscstats := &C.struct_hfsc_class_stats{}

	err := ioctl(p.fd.Fd(), DIOCGETQUEUES, uintptr(unsafe.Pointer(pq)))
	if err != nil {
		return nil, err
	}

	queues := make([]Queue, 0)

	n := int(pq.nr)

	for i := 0; i < n; i++ {
		pqs.nr = C.u_int32_t(i)
		pqs.ticket = pq.ticket
		pqs.buf = unsafe.Pointer(hfscstats)
		pqs.nbytes = C.int(unsafe.Sizeof(C.struct_hfsc_class_stats{}))

		err := ioctl(p.fd.Fd(), DIOCGETQSTATS, uintptr(unsafe.Pointer(pqs)))
		if err != nil {
			return nil, err
		}

		qname := C.GoString(&pqs.queue.qname[0])
		if qname[0] == '_' {
			continue
		}

		qparent := C.GoString(&pqs.queue.parent[0])
		qifname := C.GoString(&pqs.queue.ifname[0])

		queue := Queue{
			Name:   qname,
			Parent: qparent,
			IfName: qifname,
			Stats: QueueStats{
				TransmitPackets: uint64(hfscstats.xmit_cnt.packets),
				TransmitBytes:   uint64(hfscstats.xmit_cnt.bytes),
				DroppedPackets:  uint64(hfscstats.drop_cnt.packets),
				DroppedBytes:    uint64(hfscstats.drop_cnt.bytes),
			},
		}

		queues = append(queues, queue)
	}

	return queues, nil
}
开发者ID:mischief,项目名称:gopf,代码行数:51,代码来源:pf_openbsd.go

示例11: WithTransaction

// Perform an operation within a transaction. The transaction is
// automatically committed if the action doesn't return an error. If
// an error occurs, the transaction is automatically aborted. Any
// error is passed through to the caller.
func (env Environment) WithTransaction(config *TransactionConfig, action func(Transaction) error) (err error) {
	var parent *C.DB_TXN
	var flags C.u_int32_t = C.DB_READ_COMMITTED

	if config != nil {
		if config.Parent != NoTransaction {
			parent = config.Parent.ptr
		}
		if config.Isolation != 0 {
			flags = C.u_int32_t(config.Isolation)
		}
		if config.Bulk {
			flags |= C.DB_TXN_BULK
		}
		if config.NoWait {
			flags |= C.DB_TXN_NOWAIT
		}
		if config.NoSync {
			flags |= C.DB_TXN_NOSYNC
		}
		if config.WriteNoSync {
			flags |= C.DB_TXN_WRITE_NOSYNC
		}
	}

	var txn Transaction
	err = check(C.db_env_txn_begin(env.ptr, parent, &txn.ptr, flags))
	if err == nil {
		defer func() {
			if err != nil && txn.ptr != nil {
				C.db_txn_abort(txn.ptr)
				txn.ptr = nil
			}
		}()
	} else {
		return
	}

	err = action(txn)
	if err == nil {
		err = check(C.db_txn_commit(txn.ptr, 0))
		txn.ptr = nil
	} else {
		return
	}

	return
}
开发者ID:teodor-pripoae,项目名称:goprotodb,代码行数:52,代码来源:transaction.go

示例12: marshalDBT

// Marshal a protobuf struct into a database thang.
func marshalDBT(dbt *C.DBT, val proto.Message) (err error) {
	buf, err := proto.Marshal(val)
	if err != nil {
		return
	}

	if len(buf) > 0 {
		dbt.data = unsafe.Pointer(&buf[0])
		dbt.size = C.u_int32_t(len(buf))
	} else {
		dbt.data = nil
		dbt.size = 0
	}

	return
}
开发者ID:teodor-pripoae,项目名称:goprotodb,代码行数:17,代码来源:database.go

示例13: NewNFQueue

//Create and bind to queue specified by queueId
func NewNFQueue(queueId uint16, maxPacketsInQueue uint32, packetSize uint32) (*NFQueue, error) {
	var nfq = NFQueue{}
	var err error
	var ret C.int

	if nfq.h, err = C.nfq_open(); err != nil {
		return nil, fmt.Errorf("Error opening NFQueue handle: %v\n", err)
	}

	if ret, err = C.nfq_unbind_pf(nfq.h, AF_INET); err != nil || ret < 0 {
		return nil, fmt.Errorf("Error unbinding existing NFQ handler from AF_INET protocol family: %v\n", err)
	}

	if ret, err := C.nfq_bind_pf(nfq.h, AF_INET); err != nil || ret < 0 {
		return nil, fmt.Errorf("Error binding to AF_INET protocol family: %v\n", err)
	}

	nfq.packets = make(chan NFPacket)
	if nfq.qh, err = C.CreateQueue(nfq.h, C.u_int16_t(queueId), unsafe.Pointer(&nfq.packets)); err != nil || nfq.qh == nil {
		C.nfq_close(nfq.h)
		return nil, fmt.Errorf("Error binding to queue: %v\n", err)
	}

	if ret, err = C.nfq_set_queue_maxlen(nfq.qh, C.u_int32_t(maxPacketsInQueue)); err != nil || ret < 0 {
		C.nfq_destroy_queue(nfq.qh)
		C.nfq_close(nfq.h)
		return nil, fmt.Errorf("Unable to set max packets in queue: %v\n", err)
	}

	if C.nfq_set_mode(nfq.qh, C.u_int8_t(2), C.uint(packetSize)) < 0 {
		C.nfq_destroy_queue(nfq.qh)
		C.nfq_close(nfq.h)
		return nil, fmt.Errorf("Unable to set packets copy mode: %v\n", err)
	}

	if nfq.fd, err = C.nfq_fd(nfq.h); err != nil {
		C.nfq_destroy_queue(nfq.qh)
		C.nfq_close(nfq.h)
		return nil, fmt.Errorf("Unable to get queue file-descriptor. %v", err)
	}

	go nfq.run()

	return &nfq, nil
}
开发者ID:ipref,项目名称:go-netfilter-queue,代码行数:46,代码来源:netfilter.go

示例14: NewEnvironment

func NewEnvironment(home string, flags DbFlag, mode int) (*Environment, error) {
	ret := new(Environment)

	err := Err(C.db_env_create(&ret.ptr, 0))
	if err != nil {
		return nil, err
	}

	cHome := C.CString(home)
	defer C.free(unsafe.Pointer(cHome))

	err = Err(C.db_env_open(ret.ptr, cHome, C.u_int32_t(flags), C.int(mode)))
	if err != nil {
		ret.Close(0)
		return nil, err
	}

	return ret, ok
}
开发者ID:ajiyoshi-vg,项目名称:goberkeleydb,代码行数:19,代码来源:berkeleydb_c.go

示例15: Anchors

func (p *OpenPf) Anchors() ([]string, error) {
	pr := &C.struct_pfioc_ruleset{}

	err := ioctl(p.fd.Fd(), DIOCGETRULESETS, uintptr(unsafe.Pointer(pr)))
	if err != nil {
		return nil, err
	}

	anchors := make([]string, 0)

	n := int(pr.nr)

	for i := 0; i < n; i++ {
		pr.nr = C.u_int32_t(i)

		err := ioctl(p.fd.Fd(), DIOCGETRULESET, uintptr(unsafe.Pointer(pr)))
		if err != nil {
			return nil, err
		}

		anchor := ""

		if pr.path[0] != '\x00' {
			anchor += C.GoString(&pr.path[0]) + "/"
		}

		name := C.GoString(&pr.name[0])

		if name == PF_RESERVED_ANCHOR {
			continue
		}

		anchor += name

		anchors = append(anchors, anchor)
	}

	return anchors, nil
}
开发者ID:mischief,项目名称:gopf,代码行数:39,代码来源:pf_openbsd.go


注:本文中的C.u_int32_t函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。