本文整理汇总了C++中byte_equal函数的典型用法代码示例。如果您正苦于以下问题:C++ byte_equal函数的具体用法?C++ byte_equal怎么用?C++ byte_equal使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了byte_equal函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: dns_mx_packet
int dns_mx_packet(stralloc *out,const char *buf,unsigned int len)
{
unsigned int pos;
char header[12];
char pref[2];
uint16 numanswers;
uint16 datalen;
if (!stralloc_copys(out,"")) return -1;
pos = dns_packet_copy(buf,len,0,header,12); if (!pos) return -1;
uint16_unpack_big(header + 6,&numanswers);
pos = dns_packet_skipname(buf,len,pos); if (!pos) return -1;
pos += 4;
while (numanswers--) {
pos = dns_packet_skipname(buf,len,pos); if (!pos) return -1;
pos = dns_packet_copy(buf,len,pos,header,10); if (!pos) return -1;
uint16_unpack_big(header + 8,&datalen);
if (byte_equal(header,2,DNS_T_MX))
if (byte_equal(header + 2,2,DNS_C_IN)) {
if (!dns_packet_copy(buf,len,pos,pref,2)) return -1;
if (!dns_packet_getname(buf,len,pos + 2,&q)) return -1;
if (!stralloc_catb(out,pref,2)) return -1;
if (!dns_domain_todot_cat(out,q)) return -1;
if (!stralloc_0(out)) return -1;
}
pos += datalen;
}
return 0;
}
开发者ID:darcyg,项目名称:chaosircd,代码行数:32,代码来源:dns_mx.c
示例2: dns_ip4_packet
int dns_ip4_packet(stralloc *out,const char *buf,unsigned int len)
{
unsigned int pos;
char header[12];
uint16 numanswers;
uint16 datalen;
if (!stralloc_copys(out,"")) return -1;
pos = dns_packet_copy(buf,len,0,header,12); if (!pos) return -1;
uint16_unpack_big(header + 6,&numanswers);
pos = dns_packet_skipname(buf,len,pos); if (!pos) return -1;
pos += 4;
while (numanswers--) {
pos = dns_packet_skipname(buf,len,pos); if (!pos) return -1;
pos = dns_packet_copy(buf,len,pos,header,10); if (!pos) return -1;
uint16_unpack_big(header + 8,&datalen);
if (byte_equal(header,2,DNS_T_A))
if (byte_equal(header + 2,2,DNS_C_IN))
if (datalen == 4) {
if (!dns_packet_copy(buf,len,pos,header,4)) return -1;
if (!stralloc_catb(out,header,4)) return -1;
}
pos += datalen;
}
dns_sortip(out->s,out->len);
return 0;
}
开发者ID:GunioRobot,项目名称:djbdns,代码行数:30,代码来源:dns_ip.c
示例3: merge_equal
static int
merge_equal (struct dns_transmit *a, struct dns_transmit *b)
{
const char *ip1 = a->servers + 4 * a->curserver;
const char *ip2 = b->servers + 4 * b->curserver;
return byte_equal (ip1, 4, ip2)
&& byte_equal (a->qtype, 2, b->qtype)
&& dns_domain_equal(a->query + 14, b->query + 14);
}
开发者ID:pjps,项目名称:ndjbdns,代码行数:10,代码来源:dns_transmit.c
示例4: doit
static int doit(void)
{
unsigned int pos;
char header[12];
char qtype[2];
char qclass[2];
if (len >= sizeof buf) goto NOQ;
pos = dns_packet_copy(buf,len,0,header,12); if (!pos) goto NOQ;
if (header[2] & 128) goto NOQ;
if (header[4]) goto NOQ;
if (header[5] != 1) goto NOQ;
pos = dns_packet_getname(buf,len,pos,&q); if (!pos) goto NOQ;
pos = dns_packet_copy(buf,len,pos,qtype,2); if (!pos) goto NOQ;
pos = dns_packet_copy(buf,len,pos,qclass,2); if (!pos) goto NOQ;
if (!response_query(q,qtype,qclass)) goto NOQ;
response_id(header);
if (byte_equal(qclass,2,DNS_C_IN))
response[2] |= 4;
else
if (byte_diff(qclass,2,DNS_C_ANY)) goto WEIRDCLASS;
response[3] &= ~128;
if (!(header[2] & 1)) response[2] &= ~1;
if (header[2] & 126) goto NOTIMP;
if (byte_equal(qtype,2,DNS_T_AXFR)) goto NOTIMP;
case_lowerb(q,dns_domain_length(q));
if (!respond(q,qtype,ip)) {
qlog(ip,port,header,q,qtype," - ");
return 0;
}
qlog(ip,port,header,q,qtype," + ");
return 1;
NOTIMP:
response[3] &= ~15;
response[3] |= 4;
qlog(ip,port,header,q,qtype," I ");
return 1;
WEIRDCLASS:
response[3] &= ~15;
response[3] |= 1;
qlog(ip,port,header,q,qtype," C ");
return 1;
NOQ:
qlog(ip,port,"\0\0","","\0\0"," / ");
return 0;
}
开发者ID:GunioRobot,项目名称:djbdns,代码行数:53,代码来源:server.c
示例5: init
static int init(char ip[64])
{
int i;
unsigned int j;
int iplen = 0;
char *x;
x = env_get("DNSCACHEIP");
if (x)
while (iplen <= 60) {
if (*x == '.')
++x;
else {
i = ip4_scan(x,ip + iplen);
if (!i) break;
x += i;
iplen += 4;
}
}
if (!iplen) {
i = openreadclose("/etc/resolv.conf",&data,64);
if (i == -1) return -1;
if (i) {
if (!stralloc_append(&data,'\n')) return -1;
i = 0;
for (j = 0;j < data.len;++j)
if (data.s[j] == '\n') {
if (byte_equal("nameserver ",11,data.s + i) || byte_equal("nameserver\t",11,data.s + i)) {
i += 10;
while ((data.s[i] == ' ') || (data.s[i] == '\t'))
++i;
if (iplen <= 60)
if (ip4_scan(data.s + i,ip + iplen)) {
if (byte_equal(ip + iplen,4,"\0\0\0\0"))
byte_copy(ip + iplen,4,"\177\0\0\1");
iplen += 4;
}
}
i = j + 1;
}
}
}
if (!iplen) {
byte_copy(ip,4,"\177\0\0\1");
iplen = 4;
}
byte_zero(ip + iplen,64 - iplen);
return 0;
}
开发者ID:qsuscs,项目名称:ezmlm-idx,代码行数:51,代码来源:dns_rcip.c
示例6: socket_send6
ssize_t socket_send6(int s,const char *buf,size_t len,const char ip[16],uint16 port,uint32 scope_id)
{
#ifdef LIBC_HAS_IP6
struct sockaddr_in6 si;
#else
struct sockaddr_in si;
#endif
byte_zero(&si,sizeof si);
#ifdef LIBC_HAS_IP6
if (noipv6) {
#endif
if (ip6_isv4mapped(ip))
return socket_send4(s,buf,len,ip+12,port);
if (byte_equal(ip,16,V6loopback))
return socket_send4(s,buf,len,ip4loopback,port);
#ifdef LIBC_HAS_IP6
errno=EPROTONOSUPPORT;
return -1;
}
si.sin6_family = AF_INET6;
uint16_pack_big((char *) &si.sin6_port,port);
byte_copy((char *) &si.sin6_addr,16,ip);
#ifdef LIBC_HAS_SCOPE_ID
si.sin6_scope_id=scope_id;
#else
si.sin6_scope_id=0;
#endif
return winsock2errno(sendto(s,buf,len,0,(void*) &si,sizeof si));
#else
errno=EPROTONOSUPPORT;
return -1;
#endif
}
开发者ID:Moscarda,项目名称:opentracker-1,代码行数:34,代码来源:socket_send6.c
示例7: socket_send6
int socket_send6(int s,const char *buf,unsigned int len,const char ip[16],uint16 port,uint32 scope_id)
{
#ifdef LIBC_HAS_IP6
struct sockaddr_in6 sa;
#else
struct sockaddr_in sa;
#endif
byte_zero(&sa,sizeof sa);
#ifdef LIBC_HAS_IP6
if (noipv6) {
#endif
if (ip6_isv4mapped(ip))
return socket_send4(s,buf,len,ip+12,port);
if (byte_equal(ip,16,V6loopback))
return socket_send4(s,buf,len,ip4loopback,port);
#ifdef LIBC_HAS_IP6
errno=error_proto;
return -1;
}
sa.sin6_family = AF_INET6;
uint16_pack_big((char *) &sa.sin6_port,port);
byte_copy((char *) &sa.sin6_addr,16,ip);
return sendto(s,buf,len,0,(struct sockaddr *) &sa,sizeof sa);
#else
errno=error_proto;
return -1;
#endif
}
开发者ID:comotion,项目名称:ucspi-tcp,代码行数:29,代码来源:socket_send6.c
示例8: socket_connect6
int socket_connect6(int s,const char ip[16],uint16 port,uint32 scope_id)
{
#ifdef LIBC_HAS_IP6
struct sockaddr_in6 sa;
if (noipv6) {
#endif
if (ip6_isv4mapped(ip))
return socket_connect4(s,ip+12,port);
if (byte_equal(ip,16,V6loopback))
return socket_connect4(s,ip4loopback,port);
#ifdef LIBC_HAS_IP6
}
byte_zero(&sa,sizeof sa);
sa.sin6_family = PF_INET6;
uint16_pack_big((char *) &sa.sin6_port,port);
sa.sin6_flowinfo = 0;
sa.sin6_scope_id = scope_id;
byte_copy((char *) &sa.sin6_addr,16,ip);
return connect(s,(struct sockaddr *) &sa,sizeof sa);
#else
errno=EPROTONOSUPPORT;
return -1;
#endif
}
开发者ID:comotion,项目名称:ucspi-tcp,代码行数:26,代码来源:socket_conn6.c
示例9: defaultsoa_init
void defaultsoa_init(int fd)
{
struct stat st;
if (fstat(fd,&st) == -1)
strerr_die2sys(111,FATAL,"unable to stat data: ");
uint32_pack_big(defaultsoa,st.st_mtime);
if (byte_equal(defaultsoa,4,"\0\0\0\0"))
defaultsoa[3] = 1;
byte_copy(defaultsoa + 4,16,"\0\0\100\000\0\0\010\000\0\020\000\000\0\0\012\000");
}
开发者ID:axlecrusher,项目名称:djbdns,代码行数:10,代码来源:tinydns-data.c
示例10: dns_txt_packet
int dns_txt_packet(stralloc *out,const char *buf,unsigned int len)
{
unsigned int pos;
char header[12];
uint16 numanswers;
uint16 datalen;
char ch;
unsigned int txtlen;
int i;
if (!stralloc_copys(out,"")) return -1;
pos = dns_packet_copy(buf,len,0,header,12); if (!pos) return -1;
uint16_unpack_big(header + 6,&numanswers);
pos = dns_packet_skipname(buf,len,pos); if (!pos) return -1;
pos += 4;
while (numanswers--) {
pos = dns_packet_skipname(buf,len,pos); if (!pos) return -1;
pos = dns_packet_copy(buf,len,pos,header,10); if (!pos) return -1;
uint16_unpack_big(header + 8,&datalen);
if (byte_equal(header,2,DNS_T_TXT))
if (byte_equal(header + 2,2,DNS_C_IN)) {
if (pos + datalen > len) return -1;
txtlen = 0;
for (i = 0;i < datalen;++i) {
ch = buf[pos + i];
if (!txtlen)
txtlen = (unsigned char) ch;
else {
--txtlen;
if (ch < 32) ch = '?';
if (ch > 126) ch = '?';
if (!stralloc_append(out,&ch)) return -1;
}
}
}
pos += datalen;
}
return 0;
}
开发者ID:djbtao,项目名称:libdjb,代码行数:42,代码来源:dns_txt.c
示例11: main
/* usage: rellink "http://www.nytimes.com/2005/10/06/international/middleeast/06cnd-prexy.html?ex=1129262400&en=30e300dafe83d0fc&ei=5065&partner=MYWAY" downloaded-data.html */
int main(int argc,char* argv[]) {
char* baseurl;
char* map,* max,* x;
struct stat ss;
static stralloc sa;
if (argc!=3)
die(0,"usage: rellink http://base/url downloaded-data.html");
errmsg_iam("rellink");
baseurl=argv[1];
map=mmap_read_stat(argv[2],&ss);
if (map==0)
diesys(111,"open \"",argv[2],"\" failed");
max=map+ss.st_size;
for (x=map; x<max; ) {
stralloc tag;
/* copy non-tag */
for (; x<max && *x!='<'; ++x)
if (stralloc_append(&sa,x)==0)
nomem:
die(111,"out of memory");
if (x>=max) break;
stralloc_copys(&tag,"");
{
int indq,insq,ok;
indq=insq=ok=0;
for (; x<max; ++x) {
if (*x == '\'') insq^=1; else
if (*x == '"') indq^=1;
if (stralloc_append(&tag,x)==0) goto nomem;
if (*x == '>' && !insq && !indq) { ok=1; ++x; break; }
}
if (ok)
if (mangleurl(&tag,baseurl)==-1) goto nomem;
}
if (stralloc_cat(&sa,&tag)==0) goto nomem;
}
if (sa.len == ss.st_size && byte_equal(sa.s,ss.st_size,map)) return 0;
munmap(map,ss.st_size);
{
struct utimbuf utb;
int fd=open(argv[2],O_WRONLY|O_TRUNC,0600);
if (fd==-1) die(111,"open(\"",argv[2],"\")");
write(fd,sa.s,sa.len);
close(fd);
utb.actime=ss.st_atime;
utb.modtime=ss.st_mtime;
utime(argv[2],&utb);
}
return 0;
}
开发者ID:Geheimorganisation,项目名称:gatling,代码行数:55,代码来源:rellink.c
示例12: rr_finish
void rr_finish(const char *owner)
{
if (byte_equal(owner,2,"\1*")) {
owner += 2;
result.s[2] -= 19;
}
if (!stralloc_copyb(&key,owner,dns_domain_length(owner))) nomem();
case_lowerb(key.s,key.len);
if (cdb_make_add(&cdb,key.s,key.len,result.s,result.len) == -1)
die_datatmp();
}
开发者ID:axlecrusher,项目名称:djbdns,代码行数:11,代码来源:tinydns-data.c
示例13: dmarc_p_reject
int dmarc_p_reject(const char *domain)
{
static stralloc data;
int r;
r = dmarc_fetch(&data,domain);
if (r <= 0)
return r;
if (!dmarc_get(&data,"p",&data))
return 0;
return data.len == 6 && byte_equal(data.s,6,"reject");
}
开发者ID:bruceg,项目名称:ezmlm-idx,代码行数:12,代码来源:dmarc.c
示例14: rr_start
void rr_start(const char type[2],unsigned long ttl,const char ttd[8],const char loc[2])
{
char buf[4];
if (!stralloc_copyb(&result,type,2)) nomem();
if (byte_equal(loc,2,"\0\0"))
rr_add("=",1);
else {
rr_add(">",1);
rr_add(loc,2);
}
uint32_pack_big(buf,ttl);
rr_add(buf,4);
rr_add(ttd,8);
}
开发者ID:axlecrusher,项目名称:djbdns,代码行数:14,代码来源:tinydns-data.c
示例15: strlist_indexofb
int64
strlist_indexofb(strlist* sl, const char* x, size_t n) {
size_t p;
const char* s = sl->sa.s;
for(p = 0; p < sl->sa.len;) {
size_t l = byte_chr(&sl->sa.s[p], sl->sa.len - p, sl->sep);
if((l == 0 && p + 1 == sl->sa.len))
break;
if((n == l && byte_equal(&sl->sa.s[p], l, x)))
return p;
p += l + 1;
}
return -1;
}
开发者ID:rsenn,项目名称:dirlist,代码行数:16,代码来源:strlist_indexofb.c
示例16: doheaders
void doheaders(void)
{
int flaggoodfield,match;
if (act == AC_DIGEST)
copy(&qq,"headeradd",'H');
hdr_add2s("Mailing-List: ",MSG(TXT_MAILING_LIST));
if (listid.len > 0)
hdr_add2("List-ID: ",listid.s,listid.len);
hdr_datemsgid(when);
hdr_from("-help");
if (!stralloc_copys(&mydtline,"Delivered-To: responder for ")) die_nomem();
if (!stralloc_catb(&mydtline,outlocal.s,outlocal.len)) die_nomem();
if (!stralloc_cats(&mydtline,"@")) die_nomem();
if (!stralloc_catb(&mydtline,outhost.s,outhost.len)) die_nomem();
if (!stralloc_cats(&mydtline,"\n")) die_nomem();
qmail_put(&qq,mydtline.s,mydtline.len);
flaggoodfield = 0;
if (act != AC_DIGEST)
for (;;) {
if (getln(&ssin,&line,&match,'\n') == -1)
strerr_die2sys(111,FATAL,MSG(ERR_READ_INPUT));
if (!match) break;
if (line.len == 1) break;
if ((line.s[0] != ' ') && (line.s[0] != '\t')) {
flaggoodfield = 0;
if (case_startb(line.s,line.len,"mailing-list:")) {
if (flageditor) /* we may be running from a sublist */
flaggoodfield = 0;
else
strerr_die2x(100,FATAL,MSG(ERR_MAILING_LIST));
}
if (line.len == mydtline.len)
if (byte_equal(line.s,line.len,mydtline.s))
strerr_die2x(100,FATAL,MSG(ERR_LOOPING));
if (case_startb(line.s,line.len,"delivered-to:"))
flaggoodfield = 1;
if (case_startb(line.s,line.len,"received:"))
flaggoodfield = 1;
}
if (flaggoodfield)
qmail_put(&qq,line.s,line.len);
}
}
开发者ID:abh,项目名称:ezmlm-idx,代码行数:47,代码来源:ezmlm-get.c
示例17: new_request_from_ip
/* returns 0 if the request was added and should be serviced.
* returns 1 if a denial of service attack from this IP was detected and
* the request should not be serviced
* returns -1 if we ran out of memory trying to add the request */
int new_request_from_ip(const char ip[16],time_t now) {
struct connection** x, ** base;
unsigned int i;
if (!max_requests_per_minute) return 0;
if (now > lastpurge+60) {
for (i=0; i<sizeof(root)/sizeof(root[0]); ++i) {
x=root+i;
while (*x) {
struct connection* tmp;
if ((*x)->last+60 < now ||
(*x)->connections <= max_requests_per_minute/10) { // had a minute of silence or very low volume -> remove
tmp=*x;
x=&(*x)->next;
free(tmp);
} else {
/* halve connections count on record unless they exceed threshold */
if ((*x)->connections < max_requests_per_minute)
(*x)->connections /= 2;
x=&(*x)->next;
}
}
}
lastpurge=now;
}
x=base=root+hash(ip);
while (*x) {
if (byte_equal((*x)->ip,sizeof(ip),ip)) {
int res;
(*x)->last=now;
res = (++(*x)->connections > max_requests_per_minute);
if (x != base) {
struct connection* tmp=*x;
*x=(*x)->next;
tmp->next=*base;
*base=tmp;
}
return res;
}
x=&(*x)->next;
}
*x=malloc(sizeof(**x));
if (!*x) return -1;
(*x)->last=now;
byte_copy((*x)->ip,sizeof(ip),ip);
(*x)->connections=1;
return 0;
}
开发者ID:rousya,项目名称:linux-scalability-benchmark,代码行数:51,代码来源:connstat.c
示例18: validate_smb_packet
static int validate_smb_packet(unsigned char* pkt,unsigned long len) {
/* we actually received len bytes from the wire, so pkt+len does not
* overflow; we got len bytes, because the netbios header said there
* were that many bytes in the packet. */
unsigned char* x;
/* demand that we have at least a full smbheader and wordcount */
if (len>=smbheadersize+1 &&
byte_equal(pkt,4,"\xffSMB")) { /* signature needs to be there */
x=(unsigned char*)pkt+smbheadersize;
if (x[0] > 100)
return -1;
/* see that x + sizeof(word_count) + word_count*2 +
* sizeof(byte_count) is inside the packet */
if (!range_arrayinbuf(pkt,len,x+3,*x,2))
return -1;
/* now we know the word count is ok, but is the byte count? */
{
size_t bytecountofs=1+*x*2;
size_t bytecount;
bytecount=uint16_read((const char*)x+bytecountofs);
if (bytecount>len || x+bytecountofs+2+bytecount>pkt+len) return -1;
}
if (!hasandx(pkt[4])) return 0;
for (;;) {
size_t bytecount;
/* see that x + sizeof(word_count) + word_count*2 +
* sizeof(byte_count) is inside the packet */
if (!range_arrayinbuf(pkt,len,x+3,*x,2))
return -1;
/* we know that the byte count is within the packet */
/* read it and check whether it's ok, too */
bytecount=uint16_read((const char*)x+1+*x*2);
if (!range_arrayinbuf(pkt,len,x+3+bytecount,*x,2))
return -1;
if (x[1]==0xff) return 0;
{
uint16_t next=uint16_read((char*)x+3);
if (pkt+next < x+1+x[0]*2+2+bytecount) return -1; /* can't point backwards */
x=pkt+next;
}
if (!range_bufinbuf(pkt,len,(char*)x,5))
return -1;
}
} else
return -1;
return 0;
}
开发者ID:scolytus,项目名称:gatling,代码行数:47,代码来源:smb.c
示例19: rr_finish
void
rr_finish (const char *owner)
{
if (byte_equal (owner, 2, "\1*"))
{
owner += 2;
result.s[2] -= 19;
}
if (!stralloc_copyb (&key, owner, dns_domain_length (owner)))
err (-1, "could not allocate enough memory");
case_lowerb (key.s, key.len);
if (cdb_make_add (&cdb, key.s, key.len, result.s, result.len) == -1)
errx (-1, "could not create file `data.tmp'");
}
开发者ID:LordSpacehog,项目名称:ndjbdns,代码行数:17,代码来源:tinydns-data.c
示例20: pathexec_env_run
void pathexec_env_run(const char *file, const char *const *argv)
{
const char **e;
unsigned int elen;
unsigned int i;
unsigned int j;
unsigned int split;
unsigned int t;
if (!stralloc_cats(&plus,"")) return;
elen = 0;
for (i = 0;environ[i];++i)
++elen;
for (i = 0;i < plus.len;++i)
if (!plus.s[i])
++elen;
e = (const char **) alloc((elen + 1) * sizeof(char *));
if (!e) return;
elen = 0;
for (i = 0;environ[i];++i)
e[elen++] = environ[i];
j = 0;
for (i = 0;i < plus.len;++i)
if (!plus.s[i]) {
split = str_chr(plus.s + j,'=');
for (t = 0;t < elen;++t)
if (byte_equal(plus.s + j,split,e[t]))
if (e[t][split] == '=') {
--elen;
e[t] = e[elen];
break;
}
if (plus.s[j + split])
e[elen++] = plus.s + j;
j = i + 1;
}
e[elen] = 0;
pathexec_run(file,argv,e);
alloc_free(e);
}
开发者ID:Gottox,项目名称:runit,代码行数:45,代码来源:pathexec_env.c
注:本文中的byte_equal函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论