403Webshell
Server IP : 88.99.149.37  /  Your IP : 216.73.216.141
Web Server : nginx/1.31.2
System : Linux server-88-99-149-37 6.12.0-124.56.5.el10_1.x86_64 #1 SMP PREEMPT_DYNAMIC Fri May 15 06:12:08 EDT 2026 x86_64
User : muralimurth ( 1015)
PHP Version : 8.4.23
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/include/dovecot/sieve/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/include/dovecot/sieve/sieve-address-parts.h
#ifndef SIEVE_ADDRESS_PARTS_H
#define SIEVE_ADDRESS_PARTS_H

#include "message-address.h"

#include "sieve-common.h"
#include "sieve-match.h"
#include "sieve-extensions.h"
#include "sieve-objects.h"

/*
 * Address part definition
 */

struct sieve_address_part_def {
	struct sieve_object_def obj_def;

	const char *
	(*extract_from)(const struct sieve_address_part *addrp,
			const struct smtp_address *address);
};

/*
 * Address part instance
 */

struct sieve_address_part {
	struct sieve_object object;

	const struct sieve_address_part_def *def;
};

#define SIEVE_ADDRESS_PART_DEFAULT(definition) \
	{ SIEVE_OBJECT_DEFAULT(definition), &(definition) };

#define sieve_address_part_name(addrp) \
	( (addrp)->object.def->identifier )
#define sieve_address_part_is(addrp, definition) \
	( (addrp)->def == &(definition) )

/*
 * Core address parts
 */

enum sieve_address_part_code {
	SIEVE_ADDRESS_PART_ALL,
	SIEVE_ADDRESS_PART_LOCAL,
	SIEVE_ADDRESS_PART_DOMAIN,
	SIEVE_ADDRESS_PART_CUSTOM
};

extern const struct sieve_address_part_def all_address_part;
extern const struct sieve_address_part_def local_address_part;
extern const struct sieve_address_part_def domain_address_part;

/*
 * Address part tagged argument
 */

extern const struct sieve_argument_def address_part_tag;

void sieve_address_parts_link_tags(struct sieve_validator *valdtr,
				   struct sieve_command_registration *cmd_reg,
				   int id_code);

/*
 * Address part registry
 */

void sieve_address_part_register(struct sieve_validator *valdtr,
				 const struct sieve_extension *ext,
				 const struct sieve_address_part_def *addrp);

/*
 * Address part operand
 */

extern const struct sieve_operand_def address_part_operand;
extern const struct sieve_operand_class sieve_address_part_operand_class;

#define SIEVE_EXT_DEFINE_ADDRESS_PART(OP) SIEVE_EXT_DEFINE_OBJECT(OP)
#define SIEVE_EXT_DEFINE_ADDRESS_PARTS(OPS) SIEVE_EXT_DEFINE_OBJECTS(OPS)

static inline void
sieve_opr_address_part_emit(struct sieve_binary_block *sblock,
			    const struct sieve_address_part *addrp)
{
	sieve_opr_object_emit(sblock, addrp->object.ext, addrp->object.def);
}

static inline bool
sieve_opr_address_part_dump(const struct sieve_dumptime_env *denv,
			    sieve_size_t *address)
{
	return sieve_opr_object_dump(denv, &sieve_address_part_operand_class,
				     address, NULL);
}

static inline int
sieve_opr_address_part_read(const struct sieve_runtime_env *renv,
			    sieve_size_t *address,
			    struct sieve_address_part *addrp)
{
	if (!sieve_opr_object_read(renv, &sieve_address_part_operand_class,
				   address, &addrp->object))
		return SIEVE_EXEC_BIN_CORRUPT;

	addrp->def = (const struct sieve_address_part_def *)addrp->object.def;
	return SIEVE_EXEC_OK;
}

/*
 * Address-part string list
 */

struct sieve_stringlist *
sieve_address_part_stringlist_create(const struct sieve_runtime_env *renv,
				     const struct sieve_address_part *addrp,
				     struct sieve_address_list *addresses);

/*
 * Match utility
 */

enum sieve_addrmatch_opt_operand {
	SIEVE_AM_OPT_ADDRESS_PART = SIEVE_MATCH_OPT_LAST,
	SIEVE_AM_OPT_LAST
};

int sieve_addrmatch_opr_optional_dump(const struct sieve_dumptime_env *denv,
				      sieve_size_t *address,
				      signed int *opt_code);

int sieve_addrmatch_opr_optional_read(const struct sieve_runtime_env *renv,
				      sieve_size_t *address,
				      signed int *opt_code, int *exec_status,
				      struct sieve_address_part *addrp,
				      struct sieve_match_type *mtch,
				      struct sieve_comparator *cmp);

#endif

Youez - 2016 - github.com/yon3zu
LinuXploit