|
10 | 10 | # Description: Enable service syncd.
|
11 | 11 | ### END INIT INFO
|
12 | 12 |
|
13 |
| -DAEMON_SYNCD=/usr/bin/syncd |
| 13 | +# Source the file that holds common code for systemd and supervisord |
| 14 | +. /usr/bin/syncd_init_common.sh |
14 | 15 |
|
15 |
| -# dsserve: domain socket server for stdio |
16 |
| -DAEMON_DSSERVE=/usr/bin/dsserve |
17 |
| -DAEMON_DSSERVE_ARGS="-d $DAEMON_SYNCD --diag" |
18 |
| -ENABLE_SAITHRIFT=0 |
19 |
| -PLATFORM_DIR=/usr/share/sonic/platform |
20 |
| -HWSKU_DIR=/usr/share/sonic/hwsku |
21 |
| - |
22 |
| -if [ -x $DAEMON_DSSERVE ]; then |
23 |
| - DAEMON=$DAEMON_DSSERVE |
24 |
| - DAEMON_ARGS=$DAEMON_DSSERVE_ARGS |
25 |
| -else |
26 |
| - DAEMON=$DAEMON_SYNCD |
| 16 | +# When starting as a service, we want our process to run as a daemon, in the background |
| 17 | +if [ $CMD == $CMD_DSSERVE ]; then |
| 18 | + CMD_ARGS="-d $CMD_ARGS" |
27 | 19 | fi
|
28 | 20 |
|
29 |
| -parse_yaml() { |
30 |
| - local prefix=$2 |
31 |
| - local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034') |
32 |
| - sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \ |
33 |
| - -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $1 | |
34 |
| - awk -F$fs '{ |
35 |
| - indent = length($1)/2; |
36 |
| - vname[indent] = $2; |
37 |
| - for (i in vname) {if (i > indent) {delete vname[i]}} |
38 |
| - if (length($3) > 0) { |
39 |
| - vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")} |
40 |
| - printf("%s%s%s=\"%s\"\n", "'$prefix'",vn, $2, $3); |
41 |
| - } |
42 |
| - }' |
43 |
| -} |
44 |
| - |
45 |
| -start_bcm() |
46 |
| -{ |
47 |
| - [ -e /dev/linux-bcm-knet ] || mknod /dev/linux-bcm-knet c 122 0 |
48 |
| - [ -e /dev/linux-user-bde ] || mknod /dev/linux-user-bde c 126 0 |
49 |
| - [ -e /dev/linux-kernel-bde ] || mknod /dev/linux-kernel-bde c 127 0 |
50 |
| -} |
51 |
| - |
52 |
| -start_mlnx() |
53 |
| -{ |
54 |
| - [ -e /dev/sxdevs/sxcdev ] || ( mkdir -p /dev/sxdevs && mknod /dev/sxdevs/sxcdev c 231 193 ) |
55 |
| - |
56 |
| - # Read MAC address and align the last 6 bits. |
57 |
| - MAC_ADDRESS=`ip link show eth0 | grep ether | awk '{print $2}'` |
58 |
| - last_byte=`python -c "print '$MAC_ADDRESS'[-2:]"` |
59 |
| - aligned_last_byte=`python -c "print format(int(int('$last_byte', 16) & 0b11000000), '02x')"` # put mask and take away the 0x prefix |
60 |
| - ALIGNED_MAC_ADDRESS=`python -c "print '$MAC_ADDRESS'[:-2] + '$aligned_last_byte'"` # put aligned byte into the end of MAC |
61 |
| - |
62 |
| - # Write MAC address into /tmp/profile file. |
63 |
| - cat $HWSKU_DIR/sai.profile > /tmp/sai.profile |
64 |
| - echo "DEVICE_MAC_ADDRESS=$ALIGNED_MAC_ADDRESS" >> /tmp/sai.profile |
65 |
| -} |
66 |
| - |
67 |
| -start_centec() |
68 |
| -{ |
69 |
| - [ -e /dev/linux_dal ] || mknod /dev/linux_dal c 198 0 |
70 |
| - [ -e /dev/net/tun ] || ( mkdir -p /dev/net && mknod /dev/net/tun c 10 200 ) |
71 |
| - |
72 |
| - # Read MAC address and align the last 6 bits. |
73 |
| - MAC_ADDRESS=`ip link show eth0 | grep ether | awk '{print $2}'` |
74 |
| - last_byte=`python -c "print '$MAC_ADDRESS'[-2:]"` |
75 |
| - aligned_last_byte=`python -c "print format(int(int('$last_byte', 16) & 0b11000000), '02x')"` # put mask and take away the 0x prefix |
76 |
| - ALIGNED_MAC_ADDRESS=`python -c "print '$MAC_ADDRESS'[:-2] + '$aligned_last_byte'"` # put aligned byte into the end of MAC |
77 |
| - |
78 |
| - # Write MAC address into /tmp/profile file. |
79 |
| - cat $HWSKU_DIR/sai.profile > /tmp/sai.profile |
80 |
| - echo "DEVICE_MAC_ADDRESS=$ALIGNED_MAC_ADDRESS" >> /tmp/sai.profile |
81 |
| -} |
82 |
| - |
83 |
| -start_cavium() |
84 |
| -{ |
85 |
| - export XP_ROOT=/usr/bin/ |
86 |
| -} |
87 |
| - |
88 |
| -case "$(cat /proc/cmdline)" in |
89 |
| - *fast-reboot*) |
90 |
| - FAST_REBOOT='yes' |
91 |
| - ;; |
92 |
| - *) |
93 |
| - FAST_REBOOT='no' |
94 |
| - ;; |
95 |
| -esac |
96 |
| - |
97 | 21 | case "$1" in
|
98 | 22 | start)
|
99 |
| - eval $(parse_yaml /etc/sonic/sonic_version.yml "sonic_") |
100 |
| - |
101 |
| - if [ $sonic_asic_type == "broadcom" ]; then |
102 |
| - start_bcm |
103 |
| - DAEMON_ARGS+=" -p $HWSKU_DIR/sai.profile " |
104 |
| - if [ $FAST_REBOOT == "yes" ]; |
105 |
| - then |
106 |
| - DAEMON_ARGS+=" -t fast " |
107 |
| - fi |
108 |
| - elif [ $sonic_asic_type == "mellanox" ]; then |
109 |
| - start_mlnx |
110 |
| - DAEMON_ARGS+=" -p /tmp/sai.profile " |
111 |
| - elif [ $sonic_asic_type == "cavium" ]; then |
112 |
| - DAEMON_ARGS+=" -p $HWSKU_DIR/sai.profile " |
113 |
| - start_cavium |
114 |
| - elif [ $sonic_asic_type == "centec" ]; then |
115 |
| - start_centec |
116 |
| - DAEMON_ARGS+=" -p /tmp/sai.profile " |
117 |
| - else |
118 |
| - echo "Unknown asic type $sonic_asic_type" |
119 |
| - exit 1 |
120 |
| - fi |
121 |
| - |
122 |
| - if [ ${ENABLE_SAITHRIFT} == 1 ]; then |
123 |
| - DAEMON_ARGS+=" -r -m $HWSKU_DIR/port_config.ini" |
124 |
| - fi |
125 |
| - |
126 |
| - [ -r $PLATFORM_DIR/syncd.conf ] && . $PLATFORM_DIR/syncd.conf |
127 |
| - |
128 |
| - start-stop-daemon --start --quiet --exec $DAEMON -- $DAEMON_ARGS |
| 23 | + config_syncd |
| 24 | + start-stop-daemon --start --quiet --exec $CMD -- $CMD_ARGS |
129 | 25 | ;;
|
130 | 26 | stop)
|
131 |
| - start-stop-daemon --stop --quiet --exec $DAEMON |
| 27 | + start-stop-daemon --stop --quiet --exec $CMD |
132 | 28 | ;;
|
133 | 29 | *)
|
134 | 30 | echo "Usage: service syncd {start|stop}"
|
|
137 | 33 | esac
|
138 | 34 |
|
139 | 35 | exit 0
|
| 36 | + |
0 commit comments