函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:lib\vsprintf.c Create Date:2022-07-27 07:09:29
Last Modify:2022-05-21 09:47:42 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:ip6_compressed_string

函数原型:static __attribute__((__noinline__)) char *ip6_compressed_string(char *p, const char *addr)

返回类型:char

参数:

类型参数名称
char *p
const char *addr
1333  longest等于1
1334  colonpos等于负1
1337  bool needcolon = false
1341  内存复制( & in6, addr, sizeof(structin6_addr))
1343  useIPv4等于Note that we must __force cast these to unsigned long to make sparse happy,* since all of the endian-annotated types are fixed size regardless of arch.ipv6_addr_is_isatap( & in6)
1345  memset(zerolength, 0, zerolength的长度)
1347  如果useIPv4range等于6
1349  否则range等于8
1353 i小于range循环
1354 j小于range循环
1355  如果s6_addr16[j]不等于0则退出
1357  zerolength[i]自加
1360 i小于range循环
1361  如果zerolength[i]大于longest
1362  longest等于zerolength[i]
1363  colonpos等于i
1366  如果longest恒等于1则colonpos等于负1
1370 i小于range循环
1371  如果i恒等于colonpos
1372  如果needcoloni恒等于0则p自加等于':'
1374  p自加等于':'
1375  needcolon = false
1376  i加等于longest减1
1377  继续下一循环
1379  如果needcolon
1380  p自加等于':'
1381  needcolon = false
1384  word等于ntohs(s6_addr16[i])
1385  hi等于word右移8位
1386  lo等于word按位与0xff
1387  如果hi
1388  如果hi大于0x0f则p等于hex_byte_pack(p, hi)
1390  否则p自加等于hex_asc_lo(hi)
1392  p等于hex_byte_pack(p, lo)
1394  否则如果lo大于0x0f则p等于hex_byte_pack(p, lo)
1396  否则p自加等于hex_asc_lo(lo)
1398  needcolon = true
1401  如果useIPv4
1402  如果needcolonp自加等于':'
1404  p等于ip4_string(p, & s6_addr[12], "I4")
1406  p等于'\0'
1408  返回:p
调用者
名称描述
ip6_addr_string
ip6_addr_string_sa